Commit Graph
30 Commits
Author SHA1 Message Date
_Kerman 36820a5462 refactor(ptc-runtime-node): share the fake child and fold result validation into the protocol
Move the identical in-memory child used by the per-call and persistent
host specs into tests/fake-child.ts, and move readProgramResult next to
the ProgramResult type it validates in protocol.ts.
2026-10-20 23:55:36 +08:00
_Kerman 427d62d4a7 fix(ptc-runtime-node): fail fast on mismatched bootstraps and late replies
- Reject a control line that does not start with "{", so another
  release's length-prefixed frame fails as a protocol error instead of
  waiting for a newline until the deadline.
- Bump SSH_PROTOCOL_VERSION to 3: executable helpers embed the PTC
  worker, so an older helper is now rejected while connecting.
- Send a small error instead of a late binding result from a finished
  persistent evaluation, so it cannot overflow the pipe shared with
  the next evaluation.
- Leave per-call binding waits pending after the result instead of
  rejecting them; unawaited calls crashed the child and leaked the
  trace into the result logs.
- Pin birpc to 4.2.0 so the host and the bundled child agree, and
  regenerate THIRD_PARTY_NOTICES.md.
- Update stale frame wording.
2026-10-20 16:06:50 +08:00
_Kerman 82b23cf4d2 refactor(ptc-runtime-node): drop evaluation ids from the control protocol
One pipe delivers each evaluation's messages before its result, and the
child refuses calls from finished evaluations, so the per-message
evaluation id protected nothing. Remove it with the checks, counters and
helpers it required, measure outgoing messages only when posting, and
replace rethrowing validation blocks with early refusals.
2026-10-20 15:15:04 +08:00
_Kerman 534aafce7a refactor(ptc-runtime-node): carry the process control channel over birpc
Replace the length-prefixed JsonChannel and hand-written request/reply
correlation with typed birpc methods over newline-delimited JSON. The
host calls the child's run(); bindings call the host's invoke(); logs
and output-limit reports are notifications. The transport bounds
incoming lines and queued writes, validates UTF-8 and exposed methods,
and rejects outstanding calls when the pipe closes.

Drop logic made obsolete by the new transport, including the 32-bit
frame-length bound on maxMessageBytes.
2026-10-20 14:50:05 +08:00
Tianyi Cui 64ece4cac1 fix(sandbox): reject redirected and unsupported write grants 2026-10-18 11:10:00 +08:00
Tianyi Cui 6b71dcad85 fix(sandbox): support explicit additional writable roots 2026-10-18 11:10:00 +08:00
creatixchu 42cf8c5ee0 Merge remote-tracking branch 'origin/master' into codex/ptc-review-policy
# Conflicts:
#	apps/desktop/tests/ptc-runtime.spec.ts
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/ptc-runtime/ptc-runtime-node/README.i18n.yaml
#	packages/ptc-runtime/ptc-runtime-node/README.md
#	packages/ptc-runtime/ptc-runtime-node/README.zh.md
#	packages/ptc-runtime/ptc-runtime-node/src/index.ts
#	packages/ptc-runtime/ptc-runtime-node/src/launch.ts
#	packages/ptc-runtime/ptc-runtime-node/tests/launch.spec.ts
2026-10-09 15:10:13 +08:00
creatixchu 244ca73755 fix(ptc): keep policy cleanup waits inside PTC 2026-10-09 15:02:01 +08:00
creatixchu 6885d662d2 refactor(ptc): move mode-change coordination into sandbox policy 2026-10-08 16:43:00 +08:00
creatixchu 80b42178c5 fix(ptc): keep admission closed through owner disposal 2026-10-08 15:05:04 +08:00
creatixchu 6a6105dc1b fix(ptc): preserve tool execution identity during cancellation 2026-10-08 14:59:28 +08:00
creatixchu e3a92c9de5 fix(ptc): confine persistent memory and isolate temporary approvals 2026-10-08 14:57:36 +08:00
creatixchu bcd1e66141 fix(ptc): reserve owners through explicit environment release 2026-09-28 16:27:15 +08:00
creatixchu 6fe4bf04fc fix(ptc): retain idle process cleanup until it settles 2026-09-28 16:24:05 +08:00
creatixchu bf95e3a74b fix(ptc): preserve policy and evaluation lifecycle across memory runs 2026-09-28 16:08:45 +08:00
creatixchu 30b193b38a feat(ptc): select Node state retention through executionMode 2026-09-28 15:27:39 +08:00
creatixchu 01aeea93f2 fix(ptc): reject dispatch to an exited retained process 2026-09-25 13:34:23 +08:00
creatixchu 1c29ff0598 fix(ptc): await every retained environment during unload 2026-09-25 13:11:00 +08:00
creatixchu d256be165c fix(ptc): return bounded parse-overflow cleanup failures 2026-09-25 13:04:16 +08:00
creatixchu 0309d22520 docs(ptc): clarify raw subprocess output attribution 2026-09-24 23:01:33 +08:00
creatixchu 9e17500315 fix(ptc): separate shared schema value from config type 2026-09-24 22:55:09 +08:00
creatixchu 6a8483ce42 fix(ptc): contain retained evaluation failures and output 2026-09-24 22:44:56 +08:00
creatixchu cff260f048 chore(ptc): align published artifacts and strict lint contracts 2026-09-23 17:12:43 +08:00
creatixchu 1393ed2e12 fix(ptc): simplify evaluation settlement and isolate published bundles 2026-09-23 17:03:04 +08:00
creatixchu 7391d06a8d fix(ptc): preserve provider identity and self-contained published entries 2026-09-23 17:00:37 +08:00
creatixchu e625e7a6a5 fix(ptc): report process loss consistently across exit event ordering 2026-09-23 16:58:27 +08:00
creatixchu 4fe78cb71a fix(ptc): compose the persistent provider and share process cleanup 2026-09-23 16:55:21 +08:00
creatixchu 2859d2bb08 test(ptc): verify REPL callback ownership and scoped output 2026-09-23 16:48:26 +08:00
creatixchu 607077b985 test(ptc): cover retained state and recovery through the shipped profile 2026-09-23 16:44:48 +08:00
creatixchu 4fb14dcac6 feat(ptc): add opt-in best-effort persistent Node REPL 2026-09-23 16:41:38 +08:00