@topolo/cli 0.13.17 → 0.13.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -4
- package/agent-packs/README.md +469 -1
- package/agent-packs/coverage_changed.py +1 -1
- package/agent-packs/docs/selected-artifacts.md +47 -0
- package/agent-packs/documentation/cloud-task-state.md +56 -0
- package/agent-packs/domain-contexts/README.md +25 -0
- package/agent-packs/domain-contexts/cicd.json +8 -0
- package/agent-packs/gui/feed-adapter.js +4 -0
- package/agent-packs/gui/index.html +9 -0
- package/agent-packs/gui/studio.css +14 -0
- package/agent-packs/gui/studio.js +121 -0
- package/agent-packs/gui/studio_server.py +355 -0
- package/agent-packs/roles/cicd/CLAUDE.md +24 -0
- package/agent-packs/specializations/cicd--cicd.json +5 -0
- package/agent-packs/specializations/cicd--pipeline-engineering.json +5 -0
- package/agent-packs/specializations/cicd--promotion-deployment.json +5 -0
- package/agent-packs/specializations/cicd--queue-recovery.json +5 -0
- package/agent-packs/specializations/cicd--release-verification.json +5 -0
- package/agent-packs/specializations/cicd--runner-capacity.json +5 -0
- package/agent-packs/specializations/intakes--engineering-02.json +5 -0
- package/agent-packs/specializations/intakes--engineering-03.json +5 -0
- package/agent-packs/specializations/intakes--engineering.json +5 -0
- package/agent-packs/specializations/intakes--operator-01.json +5 -0
- package/agent-packs/specializations/intakes--operator-02.json +5 -0
- package/agent-packs/specializations/operator-skills--audio-and-narration-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--brand-and-copywriting-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--capability-research-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--data-analysis-and-visualization.json +5 -0
- package/agent-packs/specializations/operator-skills--financial-evidence-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--operating-template-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--operator-skill-library.json +5 -0
- package/agent-packs/specializations/operator-skills--operator-skills.json +5 -0
- package/agent-packs/specializations/operator-skills--operator-workflow-evaluation.json +5 -0
- package/agent-packs/specializations/operator-skills--privacy-and-agreement-review.json +5 -0
- package/agent-packs/specializations/operator-skills--storytelling-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--ux-and-accessibility-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--video-production-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--visual-design-specialist.json +5 -0
- package/agent-packs/specializations/operator-skills--workflow-integration-specialist.json +5 -0
- package/agent-packs/specializations/operators--access-and-privacy.json +5 -0
- package/agent-packs/specializations/operators--accounting-evidence-review.json +5 -0
- package/agent-packs/specializations/operators--agreement-operations.json +5 -0
- package/agent-packs/specializations/operators--books-operator.json +5 -0
- package/agent-packs/specializations/operators--brand-operator.json +5 -0
- package/agent-packs/specializations/operators--commerce-operations.json +5 -0
- package/agent-packs/specializations/operators--communications-operator.json +5 -0
- package/agent-packs/specializations/operators--content-and-assets-operator.json +5 -0
- package/agent-packs/specializations/operators--customer-operations.json +5 -0
- package/agent-packs/specializations/operators--design-operator.json +5 -0
- package/agent-packs/specializations/operators--design-production-02.json +5 -0
- package/agent-packs/specializations/operators--design-production-03.json +5 -0
- package/agent-packs/specializations/operators--design-production-04.json +5 -0
- package/agent-packs/specializations/operators--device-and-feed-operator.json +5 -0
- package/agent-packs/specializations/operators--director-operator.json +5 -0
- package/agent-packs/specializations/operators--experience-review.json +5 -0
- package/agent-packs/specializations/operators--growth-operations.json +5 -0
- package/agent-packs/specializations/operators--learn-operator.json +5 -0
- package/agent-packs/specializations/operators--localization-operator.json +5 -0
- package/agent-packs/specializations/operators--operators.json +5 -0
- package/agent-packs/specializations/operators--pay-operator.json +5 -0
- package/agent-packs/specializations/operators--research-and-intelligence.json +5 -0
- package/agent-packs/specializations/operators--roadmap-operator.json +5 -0
- package/agent-packs/specializations/operators--social-content-operator.json +5 -0
- package/agent-packs/specializations/operators--talent-operations.json +5 -0
- package/agent-packs/specializations/operators--web-operator.json +5 -0
- package/agent-packs/specializations/operators--workflow-operator.json +5 -0
- package/agent-packs/specializations/specialists--adversarial-qa.json +5 -0
- package/agent-packs/specializations/specialists--backlog-dispatch.json +5 -0
- package/agent-packs/specializations/specialists--build-01.json +5 -0
- package/agent-packs/specializations/specialists--build-02.json +5 -0
- package/agent-packs/specializations/specialists--build-03.json +5 -0
- package/agent-packs/specializations/specialists--developer-environment-steward.json +5 -0
- package/agent-packs/specializations/specialists--documentation-knowledge-steward.json +5 -0
- package/agent-packs/specializations/specialists--execution-readiness.json +5 -0
- package/agent-packs/specializations/specialists--incident-triage.json +5 -0
- package/agent-packs/specializations/specialists--platform-package-steward.json +5 -0
- package/agent-packs/specializations/specialists--product-direction-01.json +5 -0
- package/agent-packs/specializations/specialists--product-direction-02.json +5 -0
- package/agent-packs/specializations/specialists--release-recovery.json +5 -0
- package/agent-packs/specializations/specialists--release-watch.json +5 -0
- package/agent-packs/specializations/specialists--roadmap-planning-01.json +5 -0
- package/agent-packs/specializations/specialists--roadmap-planning-02.json +5 -0
- package/agent-packs/specializations/specialists--security-permissions-review.json +5 -0
- package/agent-packs/specializations/specialists--system-architecture-01.json +5 -0
- package/agent-packs/specializations/specialists--system-architecture-02.json +5 -0
- package/agent-packs/specializations/specialists--translation.json +5 -0
- package/agent-packs/specializations/specialists--ux-consistency-review.json +5 -0
- package/agent-packs/specializations/specialists--workflow-improvement.json +5 -0
- package/agent-packs/specializations/specialists--worktree-retirement.json +5 -0
- package/agent-packs/src/topolo_agent_pack/cicd.py +101 -0
- package/agent-packs/src/topolo_agent_pack/claude.py +22 -7
- package/agent-packs/src/topolo_agent_pack/claude_activation.py +157 -0
- package/agent-packs/src/topolo_agent_pack/claude_completion_recovery.py +216 -0
- package/agent-packs/src/topolo_agent_pack/claude_desktop.py +181 -0
- package/agent-packs/src/topolo_agent_pack/claude_dispatch.py +240 -0
- package/agent-packs/src/topolo_agent_pack/claude_prompt.py +74 -0
- package/agent-packs/src/topolo_agent_pack/claude_runner.py +207 -0
- package/agent-packs/src/topolo_agent_pack/claude_service.py +397 -0
- package/agent-packs/src/topolo_agent_pack/cli.py +188 -18
- package/agent-packs/src/topolo_agent_pack/closed_ledger_fence.py +118 -0
- package/agent-packs/src/topolo_agent_pack/cloud_attach.py +128 -0
- package/agent-packs/src/topolo_agent_pack/cloud_cutover.py +134 -0
- package/agent-packs/src/topolo_agent_pack/cloud_delta.py +162 -0
- package/agent-packs/src/topolo_agent_pack/cloud_migrate.py +142 -0
- package/agent-packs/src/topolo_agent_pack/cloud_recovery.py +42 -0
- package/agent-packs/src/topolo_agent_pack/cloud_work.py +126 -0
- package/agent-packs/src/topolo_agent_pack/coordinator_activity.py +27 -0
- package/agent-packs/src/topolo_agent_pack/coordinator_context.py +91 -0
- package/agent-packs/src/topolo_agent_pack/coordinator_refresh.py +116 -0
- package/agent-packs/src/topolo_agent_pack/desktop_acceptance.py +45 -0
- package/agent-packs/src/topolo_agent_pack/desktop_launcher.py +114 -0
- package/agent-packs/src/topolo_agent_pack/domain_context.py +38 -0
- package/agent-packs/src/topolo_agent_pack/execution.py +104 -7
- package/agent-packs/src/topolo_agent_pack/fresh.py +1 -1
- package/agent-packs/src/topolo_agent_pack/frontdoor.py +23 -0
- package/agent-packs/src/topolo_agent_pack/linked_task_context.py +80 -0
- package/agent-packs/src/topolo_agent_pack/live.py +285 -18
- package/agent-packs/src/topolo_agent_pack/native.py +160 -4
- package/agent-packs/src/topolo_agent_pack/policy.py +8 -0
- package/agent-packs/src/topolo_agent_pack/review_context.py +33 -0
- package/agent-packs/src/topolo_agent_pack/role_catalog.py +137 -0
- package/agent-packs/src/topolo_agent_pack/role_context.py +63 -0
- package/agent-packs/src/topolo_agent_pack/role_refresh.py +50 -0
- package/agent-packs/src/topolo_agent_pack/task_models.py +11 -7
- package/agent-packs/src/topolo_agent_pack/throughput.py +149 -0
- package/agent-packs/src/topolo_agent_pack/topolo.py +7 -1
- package/agent-packs/src/topolo_agent_pack/work.py +322 -0
- package/agent-packs/src/topolo_agent_pack/work_adoption.py +122 -0
- package/agent-packs/src/topolo_agent_pack/work_artifacts.py +84 -0
- package/agent-packs/src/topolo_agent_pack/work_context.py +77 -0
- package/agent-packs/src/topolo_agent_pack/work_gui.py +51 -0
- package/agent-packs/src/topolo_agent_pack/work_native.py +414 -0
- package/agent-packs/src/topolo_agent_pack/work_wait.py +151 -0
- package/agent-packs/templates/topolo-coordinators/AGENTS.md +7 -0
- package/agent-packs/templates/topolo-coordinators/agents/intakes/cicd/AGENTS.md +6 -0
- package/agent-packs/templates/topolo-coordinators/agents/intakes/cicd/config.json +4 -0
- package/agent-packs/templates/topolo-coordinators/agents/intakes/engineering/AGENTS.md +3 -0
- package/agent-packs/templates/topolo-coordinators/agents/intakes/engineering/config.json +4 -0
- package/agent-packs/templates/topolo-coordinators/agents/intakes/operator-01/AGENTS.md +3 -0
- package/agent-packs/templates/topolo-coordinators/agents/intakes/operator-01/config.json +4 -0
- package/agent-packs/templates/topolo-coordinators/pack.json +56 -0
- package/dist/chunk-NYDIAYVY.js +144 -0
- package/dist/{claude-pack-backend-YEVPAOID.js → chunk-UY5LEU5C.js} +1659 -21
- package/dist/claude-desktop-profile-JCQKSY3K.js +13 -0
- package/dist/claude-pack-activation-Q25MCEPU.js +506 -0
- package/dist/claude-pack-backend-HUTKGIDS.js +90 -0
- package/dist/index.js +408 -164
- package/package.json +8 -6
package/README.md
CHANGED
|
@@ -537,10 +537,24 @@ exchanges the stored refresh token for a new pair before making the request
|
|
|
537
537
|
and rewrites the config — no user action required. The OAuth `client_id` used
|
|
538
538
|
at login is persisted alongside the credential so refresh can re-authenticate.
|
|
539
539
|
|
|
540
|
-
If refresh fails (network,
|
|
541
|
-
|
|
542
|
-
`
|
|
543
|
-
|
|
540
|
+
If refresh fails for a transient reason (network, a 5xx, a rate limit), the
|
|
541
|
+
saved grant is kept and the request fails with a retryable error; a rate limit
|
|
542
|
+
reports `rate_limited` with `retryAfter`, and the CLI never retries a refresh
|
|
543
|
+
on its own.
|
|
544
|
+
|
|
545
|
+
If Auth refuses the grant (`invalid_grant` or `expired_token`), the saved
|
|
546
|
+
sign-in has ended. It is removed once, under the config lock, and is never sent
|
|
547
|
+
again by any process, so a dead sign-in cannot use up the token endpoint's
|
|
548
|
+
failure limit for everything else on the machine. One shared device
|
|
549
|
+
re-authorization is started for that environment and context, and then:
|
|
550
|
+
|
|
551
|
+
- **At a terminal**, the CLI opens the approval page, prints its URL and code,
|
|
552
|
+
waits for approval and continues the command with the new credential.
|
|
553
|
+
- **Anywhere else** (no terminal, `CI` set, or `TOPOLO_NO_REAUTH_PROMPT=1`), the
|
|
554
|
+
command exits with code 2 and a structured `reauth_required` error that
|
|
555
|
+
carries the approval link, user code, expiry and the equivalent
|
|
556
|
+
`topolo auth login` command. The device code is never printed. Approve the
|
|
557
|
+
link (or run the login command) and the next command continues.
|
|
544
558
|
|
|
545
559
|
## Topolo Agent Packs
|
|
546
560
|
|
package/agent-packs/README.md
CHANGED
|
@@ -415,7 +415,60 @@ transport applies and reads back those settings. UI automation is not part of
|
|
|
415
415
|
the adapter. Import status is deliberately separate from native activation proof.
|
|
416
416
|
### Experimental Claude live configuration
|
|
417
417
|
|
|
418
|
-
|
|
418
|
+
Fresh coordinator `configure` now uses capability discovery in the running
|
|
419
|
+
app's loaded native modules. It does not admit a particular app version or
|
|
420
|
+
bundle filename. Engineering, Operator and CI/CD are pinned automatically by
|
|
421
|
+
the acknowledged native sidebar command during this settings phase. Saved
|
|
422
|
+
`isStarred` metadata alone is insufficient. Missing or changed capabilities,
|
|
423
|
+
native refusals and unmatched readbacks stop setup with a durable journal.
|
|
424
|
+
`startup-settings` is an explicit alias for this settings phase.
|
|
425
|
+
|
|
426
|
+
The settings result keeps `packActivated` and `cloudDispatchVerified` false.
|
|
427
|
+
Native import, startup permissions, successful task execution, cloud task
|
|
428
|
+
authority, live Activity and retirement are separate acceptance boundaries.
|
|
429
|
+
The worker adapter now binds native SDK terminal receipts to the exact input,
|
|
430
|
+
SDK session and selected model. Retirement requires a verified cloud checkpoint
|
|
431
|
+
and refuses a pinned worker, active work or an archive cascade into children.
|
|
432
|
+
These capabilities do not by themselves activate the operational cloud broker.
|
|
433
|
+
For a source-independent three-coordinator installation, successful native
|
|
434
|
+
startup also installs the supported `UserPromptSubmit` and `PreToolUse` hooks
|
|
435
|
+
using the actual attached SDK session IDs. The prompt hook uses Claude's native
|
|
436
|
+
`prompt_id` to reserve one cloud task, then stops the coordinator turn before
|
|
437
|
+
inference. Missing identity, an inactive cloud authority or a lost delivery
|
|
438
|
+
acknowledgement blocks direct coordinator execution; no transcript is consulted
|
|
439
|
+
and no replacement task is created.
|
|
440
|
+
|
|
441
|
+
The Claude cloud service uses the existing GUI connection and ledger protocol.
|
|
442
|
+
It creates single-use native sessions inside the already signed-in Claude
|
|
443
|
+
Desktop process. Approved native setup installs an authenticated, owner-only
|
|
444
|
+
local socket exposing the existing create, send, read and archive operations.
|
|
445
|
+
The temporary setup debugger can then close. The connection exports neither
|
|
446
|
+
vendor credentials nor arbitrary evaluation, and does not require CLI login.
|
|
447
|
+
A tool-free readiness result,
|
|
448
|
+
native model, bypass and effective-effort acknowledgements precede task input.
|
|
449
|
+
Each phase loads one Agent specialization as `CLAUDE.md` and its selected cloud
|
|
450
|
+
task packet. Progress, checkpoints and independent review use the same cloud
|
|
451
|
+
events as Codex. Completed workers are archived through the native Desktop
|
|
452
|
+
session manager only after independently verifying their cloud checkpoint.
|
|
453
|
+
Lost acknowledgements preserve the owned session and refuse another delivery.
|
|
454
|
+
The connection belongs to one Desktop process; a replacement process requires
|
|
455
|
+
native setup and a new connection before dispatch. No local task ledger or
|
|
456
|
+
chat history replaces the cloud authority. Startup refuses execution until
|
|
457
|
+
the production Docs conditional-write contract and migrated dataset are active.
|
|
458
|
+
|
|
459
|
+
`topolo agent-packs work serve-claude --harness claude` starts the owning service
|
|
460
|
+
explicitly; installed front-door hooks start it on demand after verifying cloud
|
|
461
|
+
activation. Its lifetime is bounded by the verified Desktop process. Setup
|
|
462
|
+
preparation, source tests and hook installation are not a live dispatch proof.
|
|
463
|
+
Task assignment has its own native boundary: it requires the exact tool-free
|
|
464
|
+
readiness result and an acknowledged canonical cloud delivery reservation before
|
|
465
|
+
sending the preallocated input UUID. Missing or lost acknowledgements retain
|
|
466
|
+
that reservation for reconciliation; they never trigger another send.
|
|
467
|
+
|
|
468
|
+
The older full-roster switch/recovery path described below retains its legacy
|
|
469
|
+
compatibility qualification; it is not the fresh coordinator settings path.
|
|
470
|
+
|
|
471
|
+
The native import is not pack activation. The legacy adapter can preflight and apply
|
|
419
472
|
an already adopted roster through the running Claude main process. This is an
|
|
420
473
|
internal compatibility adapter qualified for **Claude Desktop 2.31226.1** and
|
|
421
474
|
the exact native module hashes in `src/lib/claude-pack-backend.ts`; it refuses
|
|
@@ -722,3 +775,418 @@ Only existing owned physical destinations inside the library can change. Shared
|
|
|
722
775
|
Apply reserves `launchers/adoption-<UUID>.json` exclusively. The journal starts in `may-have-config-effects`, records each verified replacement, and becomes `configuration-prepared-native-adoption-unverified` only after all readbacks. Every write rechecks generation, source, profile metadata, preservation pins and destination custody. An interrupted or conflicting apply retains the journal and any uncertain temporary file; it never automatically replays or rolls back. Reconcile exact effects with the original owner.
|
|
723
776
|
|
|
724
777
|
No apply result proves native reload, identity, current RBAC, model/effort, loaded context, original-intake permission routing or a native tool result. Hosts may react to configuration changes; admit the actual affected owner/generation and normal request settlement before applying in a live host. Later ordinary startup can renew the private credential and load identity. A previous 429/403 or scoped recovery hold remains separately applicable and elapsed time grants no retry. Actual Codex and Claude same-query context, permission, nonce result, cancellation/settlement and own retirement require independent native evidence.
|
|
778
|
+
|
|
779
|
+
## Throughput and adaptive reasoning
|
|
780
|
+
|
|
781
|
+
New task-model templates use revision 2. Codex chooses Luna/low only for an
|
|
782
|
+
explicit `trivial`, low-risk `format`, `extract-fields`, `reference-lookup` or
|
|
783
|
+
`status-read` task. Routine tasks use Sol/low (with medium as a declared effort
|
|
784
|
+
alternative); standard tasks use Sol/medium; complex and security-critical
|
|
785
|
+
tasks use Sol/high. Astra remains available only through an authorized explicit
|
|
786
|
+
override. Unavailable models/efforts refuse rather than silently falling back.
|
|
787
|
+
Existing installed configurations and fixed native sessions are not migrated by
|
|
788
|
+
upgrading the adapter. Review and install a current `models-template`, then verify
|
|
789
|
+
the actual native model/effort acknowledgement for every task. `low` is the native
|
|
790
|
+
name for light reasoning.
|
|
791
|
+
|
|
792
|
+
`topolo agent-packs lane allocate --input snapshot.json` returns a bounded,
|
|
793
|
+
read-only allocation plan. The closed version-1 input contains `now` (epoch
|
|
794
|
+
seconds), `maxAgeSeconds` (1–3600), actual execution `slots` (0–32),
|
|
795
|
+
`maxNewLanes` (0–8), `tasks`, `lanes`, `completed`, `configuration` and `catalog`.
|
|
796
|
+
The configuration/catalog use the existing task-model contracts. Each task has
|
|
797
|
+
`id`, `capability`, `priority` (0 is highest), `owner` (lane ID or null),
|
|
798
|
+
`dependencies` (completed task IDs), `authorized`, `paused` and `modelTask`.
|
|
799
|
+
Each lane has `id`, `capabilities`, `observedAt`, `registryState`
|
|
800
|
+
(idle/busy/held/paused/unknown), `nativeState` (idle/busy/unknown), `activeTask`
|
|
801
|
+
(ID or null), `retainedTasks`, `reusableCheckpoint`, `assignments`,
|
|
802
|
+
`lastAssigned` and its explicit model `constraints`.
|
|
803
|
+
|
|
804
|
+
The allocator considers every compatible worker rather than preferring an
|
|
805
|
+
ordinal. It chooses the least assigned, then oldest assigned worker; never
|
|
806
|
+
moves an owned task; permits retained custody only at an explicit idle safe
|
|
807
|
+
checkpoint; isolates stale/contradictory observations and blocked dependencies;
|
|
808
|
+
and limits both existing work and proposed new lanes by supplied execution
|
|
809
|
+
capacity. A worker receives at most one assignment per plan. The caller must
|
|
810
|
+
supply trustworthy current observations; a timestamp in JSON does not prove
|
|
811
|
+
native availability or admission.
|
|
812
|
+
|
|
813
|
+
The result's snapshot digest must be checked by the canonical claim writer
|
|
814
|
+
before an exclusive assignment. Each assignment includes its full model
|
|
815
|
+
resolution with `nativeACK: null`. Create requests are proposals requiring the
|
|
816
|
+
normal registered native lifecycle, not created agents or claims. This command
|
|
817
|
+
does not claim, dispatch, wake, schedule, execute or retire anything. Native
|
|
818
|
+
settings, authority, actual delivery and completion remain independently
|
|
819
|
+
verified boundaries. In particular, it does not repair or establish a hidden
|
|
820
|
+
cross-chat event transport by writing a file.
|
|
821
|
+
|
|
822
|
+
Fresh-role `config.json` model/effort presets are retained in the captured agent
|
|
823
|
+
manifest and used when compiling its Codex runtime policy. They do not revert
|
|
824
|
+
to a legacy high-effort role default on activation. A missing preset keeps the
|
|
825
|
+
legacy profile unchanged. Native catalog and exact settings readback still apply.
|
|
826
|
+
|
|
827
|
+
### Individual role definitions and front-door dispatch
|
|
828
|
+
|
|
829
|
+
`work-bind-roles --pack NAME --agent-workspace WORKSPACE` performs installation
|
|
830
|
+
administration: it discovers Agent definitions and writes only IDs and instruction
|
|
831
|
+
digests to `work/role-bindings.json`. Each definition has a unique
|
|
832
|
+
`config.specialization.logicalId`, concise role-specific instructions, and matching
|
|
833
|
+
`config.purpose`. Source authoring files are in `specializations/`; they are not a
|
|
834
|
+
runtime export. Updating an existing published definition requires its supported
|
|
835
|
+
draft lifecycle transition. This adapter reads the pinned definition; it does not
|
|
836
|
+
claim that an edited definition has a newly published hosted-execution version.
|
|
837
|
+
|
|
838
|
+
Each temporary worker fetches exactly one Agent ID, verifies its organization,
|
|
839
|
+
workspace, logical role and instruction digest, and writes only that specialization
|
|
840
|
+
to its new workspace (`AGENTS.md` for Codex, `CLAUDE.md` for Claude). Model
|
|
841
|
+
constraints cover the configured harnesses; resolution still intersects the
|
|
842
|
+
selected harness with its current native account catalog and refuses unavailable
|
|
843
|
+
models. A separate pinned task context can reference one immutable
|
|
844
|
+
Bytes JSON packet (`topolo-task-context-v1`, taskId, markdown). Assignment never
|
|
845
|
+
reads the role export, Agent memory or prior chat history. Missing or changed
|
|
846
|
+
bindings stop dispatch rather than borrowing another role's context.
|
|
847
|
+
|
|
848
|
+
Enable `frontdoorDispatch: true` in the reviewed work configuration only after all
|
|
849
|
+
three channel bindings and role/context references are qualified. Text requests
|
|
850
|
+
from Engineering, Operator and CI/CD then become broker tasks before the
|
|
851
|
+
coordinator receives an acknowledgement-only receipt. A native message ID provides
|
|
852
|
+
idempotency; ambiguous retries and unbound attachments refuse. This is functional
|
|
853
|
+
routing, not a new tool-permission sandbox. Existing direct coordinator turns are
|
|
854
|
+
preserved and are never submitted again by enabling this feature.
|
|
855
|
+
|
|
856
|
+
Activity projects task-ledger transitions and separately labels observed native
|
|
857
|
+
coordinator activity. Observing an active or idle native chat does not establish
|
|
858
|
+
business completion. Native lifecycle events persist these observations and wake
|
|
859
|
+
the GUI event stream; a fresh GUI request can also reconcile the current status.
|
|
860
|
+
Observation failures are exposed, not presented as verified live progress.
|
|
861
|
+
|
|
862
|
+
Mutable cloud task authority remains a separate activation gate. Recovering an
|
|
863
|
+
immutable evidence archive or fetching individual roles/context does not prove
|
|
864
|
+
conditional cloud task ownership, safe machine takeover, or Claude Desktop native
|
|
865
|
+
settings activation. Those boundaries require their own runtime acceptance.
|
|
866
|
+
|
|
867
|
+
Pass `--bytes-workspace WORKSPACE` when binding installation roles to configure the
|
|
868
|
+
reviewed production task-context workspace. A new request is queued immediately;
|
|
869
|
+
its background dispatch publishes and reads back one small immutable request
|
|
870
|
+
packet before starting a native worker, then persists that artifact reference on
|
|
871
|
+
the existing task. Upload acknowledgement loss is retained as an uncertain receipt
|
|
872
|
+
and is not replayed. Task context never silently falls back to a template tree.
|
|
873
|
+
Native input arriving during the short acknowledgement turn (`turn/steer`) enters
|
|
874
|
+
the same idempotent request path as `turn/start`.
|
|
875
|
+
|
|
876
|
+
### Source-only Topolo installation
|
|
877
|
+
|
|
878
|
+
The bundled `templates/topolo-coordinators` template creates exactly Engineering,
|
|
879
|
+
Operator and CI/CD. It contains no native IDs, old work or specialist chats.
|
|
880
|
+
Build it in a genuinely new installation store, then prepare cloud dispatch:
|
|
881
|
+
|
|
882
|
+
```sh
|
|
883
|
+
topolo-agent-pack --store /local/AgentPacks/installation build topolo-instance --template templates/topolo-coordinators
|
|
884
|
+
topolo-agent-pack --store /local/AgentPacks/installation work-install --pack topolo-instance --agent-workspace AGENT_WORKSPACE --bytes-workspace BYTES_WORKSPACE
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
The version-2 specialization catalog contains only role metadata, Agent references,
|
|
888
|
+
instruction digests and explicit task-model constraints. Engineering, operations
|
|
889
|
+
and CI/CD have separate eligible disciplines and independent reviewers. A task
|
|
890
|
+
worker inherits its currently owned coordinator's qualified permission profile,
|
|
891
|
+
then receives the selected specialization and independently resolved task model;
|
|
892
|
+
there is no captured-specialist runtime or source thread dependency.
|
|
893
|
+
|
|
894
|
+
Preparation is not activation. This path requires the existing activated cloud
|
|
895
|
+
work dataset and current organization-bound/native permission qualification.
|
|
896
|
+
Missing cloud authority refuses before execution and never selects local history
|
|
897
|
+
or SQLite as an alternative. A busy outgoing owner is preserved.
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
## Destination account and native sidebar sections
|
|
901
|
+
|
|
902
|
+
Portable packs carry role and group membership, not authority to use a captured
|
|
903
|
+
account identity. Import creates native memberships without copying source
|
|
904
|
+
account IDs into the destination sidebar. The ordinary switch/install verification
|
|
905
|
+
reads the destination's native `account/read` response and binds the original
|
|
906
|
+
sections to its `workspaceRouting.chatgptAccountId` when the account is ChatGPT.
|
|
907
|
+
No credentials are parsed, copied or created by sidebar binding.
|
|
908
|
+
|
|
909
|
+
A provider-only or signed-out profile reports `pending-sign-in`; a non-ChatGPT
|
|
910
|
+
account reports `pending-chatgpt-account`; a ChatGPT response lacking the actual
|
|
911
|
+
workspace ID reports `pending-account-identity`. These states do not mean the
|
|
912
|
+
sidebar is installed or visible. After ordinary sign-in, repeat the same switch
|
|
913
|
+
command: an unchanged composition refreshes only its destination presentation,
|
|
914
|
+
without replacing agents or history. A managed window uses its existing native
|
|
915
|
+
manager and checks the selected home, account and backend generation.
|
|
916
|
+
|
|
917
|
+
`configured-rendering-unverified` means account-scoped settings were bound; it
|
|
918
|
+
does not prove visible sections, provider transport or context/permission routing.
|
|
919
|
+
Sidebar binding never changes model providers, models, effort, permissions or
|
|
920
|
+
authentication mode. Genuine account/provider coexistence, manual/background/
|
|
921
|
+
dynamic provider inheritance and actual transport still require qualification
|
|
922
|
+
before changing live profile defaults.
|
|
923
|
+
|
|
924
|
+
## Closed legacy cloud cutover
|
|
925
|
+
|
|
926
|
+
`work-cloud-prepare-delta --source-store SOURCE --input REQUEST.json` prepares
|
|
927
|
+
explicitly selected closed tasks against the destination's existing inactive
|
|
928
|
+
Docs dataset and exact current version. The request contains `documentId`,
|
|
929
|
+
`datasetId`, `expectedCurrentVersionId`, and `tasks` selectors with `taskId`,
|
|
930
|
+
`revision`, and `artifactManifest` (null, or an exact path/SHA-256 manifest).
|
|
931
|
+
The command preserves task and worker identities, blocked states and historical
|
|
932
|
+
checkpoint hashes. It publishes only the selected request packet, final assistant
|
|
933
|
+
outputs, normalized terminal receipts and explicitly declared artifact files to
|
|
934
|
+
Bytes, then verifies their readback before a revision-checked local metadata
|
|
935
|
+
transition. Native prompts, reasoning and tool histories are excluded. A bounded
|
|
936
|
+
artifact manifest supports more files without loading them all into dispatch
|
|
937
|
+
context. Original evidence references remain historical provenance, not fresh
|
|
938
|
+
verification of external files. Durable upload receipts refuse uncertain replay.
|
|
939
|
+
|
|
940
|
+
After all tasks and native workers are closed, upgrade the idle legacy proxy to
|
|
941
|
+
the released source and request `work cutover`. This authenticated native barrier
|
|
942
|
+
holds the broker lock, checks pending jobs and turns, fences SQLite writes inside
|
|
943
|
+
its transaction and stops its native child. Its immutable ACK binds the process
|
|
944
|
+
birth, root, executing guard source and final snapshot. An older running proxy
|
|
945
|
+
cannot claim this contract. A failed stop leaves a fence requiring explicit
|
|
946
|
+
recovery; it does not permit migration or resume writes.
|
|
947
|
+
|
|
948
|
+
`--store DESTINATION work-cloud-cutover --source-store SOURCE --input REQUEST.json`
|
|
949
|
+
requires that same ACK and an exact `documentId`, `datasetId`,
|
|
950
|
+
`expectedCurrentVersionId`, and `sourceDigest`. It preserves the existing portable
|
|
951
|
+
cloud rows, appends verified delta rows under their original IDs, checks the
|
|
952
|
+
retained inventory digest, and activates that same Doc with one conditional
|
|
953
|
+
version write. Every new context packet, checkpoint and result artifact is read
|
|
954
|
+
back before activation. A durable intent and exact readback resolve a lost ACK
|
|
955
|
+
without repeating the write. Neither command starts work or creates replacement
|
|
956
|
+
tasks. Do not reactivate the fenced local broker after cloud activation.
|
|
957
|
+
|
|
958
|
+
A fresh signed-in Claude installation can use the same startup entry point:
|
|
959
|
+
|
|
960
|
+
```sh
|
|
961
|
+
topolo agent-packs --store /local/AgentPacks/installation startup-settings PACK --prepare --pid CURRENT_PID --endpoint AUTHORIZED_LOOPBACK_ENDPOINT --apply
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
`--prepare` validates existing approved installation consent and current organization
|
|
965
|
+
policy, prepares exactly the three coordinator records without opening CLI
|
|
966
|
+
sessions, and writes a new policy artifact. Missing native coordinator identities
|
|
967
|
+
are created through the signed-in Desktop session manager and must finish their
|
|
968
|
+
own tool-free native readiness result before settings or pins are accepted.
|
|
969
|
+
Prepared coordinator context uses role charters and policy rather than local
|
|
970
|
+
conversation history. An unresolved startup journal prevents preparation.
|
|
971
|
+
|
|
972
|
+
For an explicitly selected move from another installation, add
|
|
973
|
+
`--previous-connection /previous/installation/claude/desktop-task-connection.json`.
|
|
974
|
+
The old endpoint and its exact three bound coordinators must be quiescent. After
|
|
975
|
+
successor settings, control and hook acknowledgements, startup unpins and archives
|
|
976
|
+
only those old coordinators through acknowledged native APIs. Active work, child
|
|
977
|
+
cascades, changed ownership or lost acknowledgements retain the recovery journal;
|
|
978
|
+
they never trigger an automatic replay. Cloud activation and verified business
|
|
979
|
+
work remain separate acceptance boundaries.
|
|
980
|
+
|
|
981
|
+
## Attach another clean installation to the same task authority
|
|
982
|
+
|
|
983
|
+
After the original migration activates its existing Docs dataset, a second
|
|
984
|
+
clean installation can join that **same document and dataset**, with a distinct
|
|
985
|
+
installation ID. Prepare its authored three-coordinator pack, organization-bound
|
|
986
|
+
consent and `work-install` metadata first; do not copy task SQLite files or chat
|
|
987
|
+
history, and do not reuse the fenced migration-source directory.
|
|
988
|
+
|
|
989
|
+
```sh
|
|
990
|
+
topolo agent-packs --store CLEAN_INSTALLATION work-cloud-attach --input REVIEWED_SELECTORS.json
|
|
991
|
+
```
|
|
992
|
+
|
|
993
|
+
The exact selectors are `pack`, `workspaceId`, `documentId`, `datasetId`,
|
|
994
|
+
`installationId`, `expectedCurrentVersionId` and `expectedCatalogDigest`.
|
|
995
|
+
Attachment freshly verifies the production principal, organization execution
|
|
996
|
+
policy, selected current Docs version, activated dataset and local role catalog.
|
|
997
|
+
It rejects an existing local ledger, native owner, unresolved operation or an
|
|
998
|
+
installation ID already recorded in cloud tasks or workers. Foreign active work
|
|
999
|
+
retains its owner. The operation writes only a private local binding and its
|
|
1000
|
+
exclusive recovery journal; it creates no cloud documents, tasks or workers and
|
|
1001
|
+
never adopts or resumes work. An exact verified replay reads back the same
|
|
1002
|
+
binding without rewriting it. A lost local acknowledgement can reconcile an
|
|
1003
|
+
already written exact binding; a missing or changed binding remains held without
|
|
1004
|
+
replay. Native execution refuses any incomplete attachment journal. Normal host
|
|
1005
|
+
startup and task dispatch remain separate, verified activation steps.
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
## Reconnect the existing fenced Codex installation
|
|
1009
|
+
|
|
1010
|
+
`work-cloud-migrate --input SELECTORS.json` prepares a read-only plan for the
|
|
1011
|
+
original installation whose closed SQLite ledger was migrated to an existing
|
|
1012
|
+
cloud dataset. This differs from clean-install attachment: it preserves its
|
|
1013
|
+
three existing coordinator keys and native IDs, including mixed-pack channels.
|
|
1014
|
+
Selectors are `installationId` (a fresh, distinct identity),
|
|
1015
|
+
`expectedFenceDigest`, `expectedMetadataDigest` and
|
|
1016
|
+
`expectedTargetCatalogDigest`. Apply the exact reviewed plan with
|
|
1017
|
+
`work-cloud-migrate --input PLAN.json --apply`.
|
|
1018
|
+
|
|
1019
|
+
The operation verifies the immutable SQLite fence, source history, original
|
|
1020
|
+
target binding, canonical retained digest, current production identity and
|
|
1021
|
+
organization policy, selected Agent definitions and original native consent.
|
|
1022
|
+
It changes only local configuration, reviewed role references and cloud binding,
|
|
1023
|
+
with a durable partial-write hold. Cloud versions and task owners are recorded
|
|
1024
|
+
as observations; normal concurrent cloud work cannot invalidate a local-only
|
|
1025
|
+
attachment. All actual task mutations retain their existing cloud version and
|
|
1026
|
+
owner CAS checks. No task, worker, owner or local history is copied, rewritten,
|
|
1027
|
+
adopted or resumed by attachment. The legacy ledger remains fenced permanently.
|
|
1028
|
+
Admission rechecks the exact metadata and selected channel-role closure before
|
|
1029
|
+
using the original coordinator as the worker's permission source. Starting the
|
|
1030
|
+
attached installation never automatically adopts another installation's work.
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
Fresh Claude readiness startup uses the native workspace-trust manager for only
|
|
1034
|
+
its exact approved directory, with literal-key trust and current context/consent
|
|
1035
|
+
checks. It does not trust a parent directory or dismiss a trust dialog by UI.
|
|
1036
|
+
If an interrupted three-coordinator bootstrap left only its first creation
|
|
1037
|
+
attempt, `topolo agent-packs --store ROOT startup-settings PACK --endpoint URL
|
|
1038
|
+
--pid PID --reconcile` independently checks all three native identities,
|
|
1039
|
+
transcripts and pending starts. It never sends input. Only verified absence can
|
|
1040
|
+
retire the startup marker into the retained audit; arbitrary earlier filesystem
|
|
1041
|
+
effects remain UNKNOWN. Any existing session, history, active start, changed
|
|
1042
|
+
context or later journal effect keeps the hold. Start normally only after that
|
|
1043
|
+
explicit reconciliation receipt; do not remove the marker by hand.
|
|
1044
|
+
|
|
1045
|
+
For an older installation that predates frontdoor bindings, an explicit
|
|
1046
|
+
`--previous-library /exact/old-profile/library` reads its existing private
|
|
1047
|
+
coordinator-adoption proof and three original identity records. Their file
|
|
1048
|
+
hashes stay bound throughout startup. Native idle/ownership checks happen
|
|
1049
|
+
before fresh readiness starts. After successor settings, pins, hooks and task
|
|
1050
|
+
control are acknowledged, the existing native retirement path unpins and
|
|
1051
|
+
archives only those three old identities. Active work, changed proof, children
|
|
1052
|
+
or lost acknowledgements preserve the hold; no UI pinning or replacement
|
|
1053
|
+
metadata is used.
|
|
1054
|
+
|
|
1055
|
+
If readiness creation was acknowledged but the SDK has not yet published its
|
|
1056
|
+
session identity, the reader waits on the exact queued input; terminal results
|
|
1057
|
+
still require the matching SDK identity. An interrupted readiness-only operation
|
|
1058
|
+
can use `startup-settings PACK --continue-readiness --policy ORIGINAL_POLICY
|
|
1059
|
+
--endpoint CURRENT_ENDPOINT --pid CURRENT_PID --apply` with the same previous
|
|
1060
|
+
connection/library selectors. This retains its original journal, context and
|
|
1061
|
+
preallocated IDs. Existing probes are verified without resending input; only
|
|
1062
|
+
previously uncreated coordinator identities may start. Unknown starts, changed
|
|
1063
|
+
context, business input or later settings effects refuse continuation.
|
|
1064
|
+
|
|
1065
|
+
The native cloud authorizer uses a qualified host Python 3.11+ executable,
|
|
1066
|
+
independent of Desktop's inherited PATH. Its absolute regular executable, byte
|
|
1067
|
+
digest and exact version are bound into native control qualification and checked
|
|
1068
|
+
before each authorization child; no application environment or account changes.
|
|
1069
|
+
|
|
1070
|
+
Managed Claude startup retains both identity-bearing profile roots. Before native
|
|
1071
|
+
startup, `startup-settings PACK --launch-desktop --policy POLICY
|
|
1072
|
+
--desktop-profile EXISTING_DESKTOP_DIRECTORY --claude-config-dir EXISTING_CODE_DIRECTORY
|
|
1073
|
+
--apply` launches through macOS LaunchServices with the exact SDK environment,
|
|
1074
|
+
or discovers the already owned profile process. It never copies authentication
|
|
1075
|
+
or history and does not stop another profile. A private exclusive launch receipt
|
|
1076
|
+
prevents duplicate launches after a lost acknowledgement. The subsequent normal
|
|
1077
|
+
startup verifies the current native user-data directory and SDK root before any
|
|
1078
|
+
session or settings changes. App versions are discovered rather than pinned.
|
|
1079
|
+
|
|
1080
|
+
When an acknowledged readiness probe survived an app restart but its ephemeral
|
|
1081
|
+
SDK terminal did not, explicit original-operation continuation can adopt only
|
|
1082
|
+
its exact persisted fixed user/READY exchange, selected model/settings and
|
|
1083
|
+
unchanged role context after independently proving the original process dead.
|
|
1084
|
+
It records `originalTerminalUnknown: true`; it does not reconstruct a terminal
|
|
1085
|
+
receipt or resend the probe. Only this installation readiness exchange can use
|
|
1086
|
+
the history adoption path. The native manager then warms the same existing SDK
|
|
1087
|
+
session without model input, and settings/process identity are read back before
|
|
1088
|
+
startup proceeds. Pending/held work, another input, tools, changed identity or
|
|
1089
|
+
uncreated IDs with history preserve the hold. Business worker completion still
|
|
1090
|
+
requires the original matching SDK terminal and lifecycle evidence.
|
|
1091
|
+
|
|
1092
|
+
If readiness, pins, effective settings and the native task-control installation
|
|
1093
|
+
were acknowledged but front-door hook installation failed, use the original
|
|
1094
|
+
operation's `startup-settings PACK --complete-startup --policy ORIGINAL_POLICY
|
|
1095
|
+
--endpoint CURRENT_ENDPOINT --pid CURRENT_PID --apply` (and the original
|
|
1096
|
+
`--previous-library` when present). This checks the existing three idle probe
|
|
1097
|
+
sessions and control identity, consumes the unchanged original front-door input,
|
|
1098
|
+
finishes idempotent hooks and then retires the exact old coordinators. It never
|
|
1099
|
+
creates sessions, resends readiness, reapplies models or repins. Any later work,
|
|
1100
|
+
changed settings/context, missing ACK or uncertain retirement keeps the hold.
|
|
1101
|
+
Hook installation has a bounded ten-minute budget for the selected cloud reads;
|
|
1102
|
+
failed attempts retain private error-code/status and stderr-digest diagnostics.
|
|
1103
|
+
|
|
1104
|
+
After the same three coordinators have completed their cloud dispatch, review,
|
|
1105
|
+
Activity and archival qualification, finalize their original startup with
|
|
1106
|
+
`topolo agent-packs --store ROOT startup-settings PACK --finalize --policy POLICY
|
|
1107
|
+
--startup-operation ORIGINAL_UUID --qualification-task COMPLETED_TASK_UUID
|
|
1108
|
+
--endpoint OWNED_LOOPBACK_ENDPOINT --pid OWNED_PID --allow-native-debugger-menu --apply`. This independently
|
|
1109
|
+
reads the current cloud task/checkpoints and native session identities before
|
|
1110
|
+
journaled adoption of metadata. It never imports, copies or resends a conversation.
|
|
1111
|
+
The completed startup journal and original unknown terminal evidence remain intact.
|
|
1112
|
+
|
|
1113
|
+
Subsequent `startup-settings PACK --launch-desktop --policy POLICY --apply` uses
|
|
1114
|
+
the recorded signed-in profile and same three Desktop/SDK identities. It reports
|
|
1115
|
+
ready only after the closed native control and owning cloud dispatcher answer.
|
|
1116
|
+
A cold start verifies the predecessor is dead and every installation-owned worker
|
|
1117
|
+
is closed before temporary loopback inspection restores connect-only native
|
|
1118
|
+
control. Inspection closes on success and failure; uncertain launch or metadata
|
|
1119
|
+
ACKs retain their journal and prohibit replay. An active metadata file alone is
|
|
1120
|
+
never operational acceptance. The Electron inspector capability is discovered
|
|
1121
|
+
and verified against the actual PID/profile; no application build is pinned.
|
|
1122
|
+
|
|
1123
|
+
With explicit launcher-only menu authorization, cold restoration discovers the
|
|
1124
|
+
unique enabled, unchecked native “Enable Main Process Debugger” checkbox in the
|
|
1125
|
+
exact owned macOS process. It requires a free loopback9229 endpoint, uses only
|
|
1126
|
+
that vendor capability, then verifies the actual PID and Desktop/SDK profile
|
|
1127
|
+
before native control restoration. The temporary inspector closes afterward.
|
|
1128
|
+
There are no guessed startup flags, SIGUSR1, fuse changes, application patches,
|
|
1129
|
+
pin/archive UI actions or account copying. Absent/disabled/ambiguous native
|
|
1130
|
+
capability or unresolved workers retain their existing ownership and audit.
|
|
1131
|
+
|
|
1132
|
+
An approved setup can upgrade only the closed native task-control implementation
|
|
1133
|
+
without touching coordinator sessions or task inputs:
|
|
1134
|
+
|
|
1135
|
+
```sh
|
|
1136
|
+
topolo agent-packs --store INSTALLATION startup-settings PACK --upgrade-control \
|
|
1137
|
+
--startup-operation ORIGINAL_STARTUP_UUID --policy ORIGINAL_POLICY \
|
|
1138
|
+
--endpoint CURRENT_APPROVED_LOOPBACK_ENDPOINT --pid CURRENT_DESKTOP_PID --apply
|
|
1139
|
+
```
|
|
1140
|
+
|
|
1141
|
+
This requires the completed original three-coordinator startup, unchanged owned
|
|
1142
|
+
context and bindings, a stopped dispatcher, and zero native workers. It preserves
|
|
1143
|
+
all startup and unresolved-effect evidence, sends no native input, and closes the
|
|
1144
|
+
temporary inspector even on refusal. Recover an already-delivered uncertain
|
|
1145
|
+
completion with `work-recover-claude-completion --harness claude --input REQUEST`
|
|
1146
|
+
only under its exact reviewed worker/output manifest; this never resends work.
|
|
1147
|
+
|
|
1148
|
+
If a cold launch stopped before any control installation, retain its journal and
|
|
1149
|
+
use `startup-settings PACK --launch-desktop --continue-launch ORIGINAL_UUID
|
|
1150
|
+
--policy ORIGINAL_POLICY --endpoint CURRENT_APPROVED_ENDPOINT --pid CURRENT_PID
|
|
1151
|
+
--apply`. This accepts only the original single-row pre-control journal, an
|
|
1152
|
+
independently dead predecessor, unchanged identities, closed historical workers
|
|
1153
|
+
and the exact already launched profile. It never launches another application,
|
|
1154
|
+
creates coordinators or resends input. Any later or ambiguous journal retains
|
|
1155
|
+
custody and refuses this continuation.
|
|
1156
|
+
|
|
1157
|
+
A cold launch that has already acknowledged its exact native control and hooks,
|
|
1158
|
+
but failed before service readiness, uses the same `--continue-launch` selector.
|
|
1159
|
+
The launcher validates that journaled control, private secret, original predecessor,
|
|
1160
|
+
installed hook bindings and three unchanged SDK identities. It requires the former
|
|
1161
|
+
service process to have exited and its lifetime lock to be free, then independently
|
|
1162
|
+
verifies the current control is idle before ensuring the service and completing
|
|
1163
|
+
metadata. It does not repeat connect-only calls, control installation, hooks,
|
|
1164
|
+
coordinator creation or input. Unknown or later journal stages remain held.
|
|
1165
|
+
The dispatcher closes its accepted watch connections before awaiting server
|
|
1166
|
+
shutdown, so a connected Activity view cannot keep a dead Desktop's owner alive.
|
|
1167
|
+
|
|
1168
|
+
`topolo agent-packs --store ROOT desktop-launcher` installs the distinct
|
|
1169
|
+
Topolo Agent Pack application for that Codex installation. Use its own icon:
|
|
1170
|
+
generic ChatGPT, Personal or Work icons can open another profile. Opening the
|
|
1171
|
+
pack icon restores its exact live managed process without restarting the backend
|
|
1172
|
+
or replaying active work; a cold open uses the existing guarded launcher.
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
## Coordinator conversation and specialist assignments
|
|
1176
|
+
|
|
1177
|
+
The three pinned coordinators converse with the human on their existing native
|
|
1178
|
+
model. Each prompt receives bounded current-channel cloud task heads and the
|
|
1179
|
+
qualified installation's broker command. Status, follow-ups and clarification
|
|
1180
|
+
create no task automatically; the original input and attachments remain intact.
|
|
1181
|
+
For an actual assignment, the coordinator reconciles existing work and explicitly
|
|
1182
|
+
uses the task broker with the supplied deterministic native-message request ID.
|
|
1183
|
+
Implementation and operational effects stay with task-based specialists.
|
|
1184
|
+
|
|
1185
|
+
Claude's coordinator hook permits owned context reads and a single typed request
|
|
1186
|
+
file, plus foreground bundled broker commands for reads, dispatch and responses.
|
|
1187
|
+
It denies direct shell engineering, source edits and other agent mechanisms.
|
|
1188
|
+
`work wait --input REQUEST.json` reads an existing task until a canonical change
|
|
1189
|
+
or terminal result, with exact task/cursor selectors and a 1–30 second bound.
|
|
1190
|
+
It never submits, adopts, reruns or changes work. Coordinators inspect those real
|
|
1191
|
+
results and answer in their native conversation; a queue acknowledgement or GUI
|
|
1192
|
+
link alone does not satisfy the human request.
|
|
@@ -15,7 +15,7 @@ from coverage.parser import PythonParser
|
|
|
15
15
|
|
|
16
16
|
RELEASE_BASE = '6a13ada56844712aae58738ba01dbbdf90718bef'
|
|
17
17
|
SOURCE = pathlib.Path('agent-packs/src/topolo_agent_pack')
|
|
18
|
-
MODULES = {'topolo', 'claude', 'policy', 'permissions', 'approvals', 'execution', 'live', 'cli', 'lanes', 'task_models'}
|
|
18
|
+
MODULES = {'topolo', 'claude', 'policy', 'permissions', 'approvals', 'execution', 'live', 'cli', 'lanes', 'task_models', 'throughput'}
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class CoverageRefused(RuntimeError):
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Selected legacy task artifacts
|
|
2
|
+
|
|
3
|
+
`work-cloud-prepare-delta` preserves the existing task and worker IDs, closed
|
|
4
|
+
native receipts, source digests and unresolved outcomes. It does not start work
|
|
5
|
+
or activate a dataset. Original archived files and checkpoints are never edited.
|
|
6
|
+
|
|
7
|
+
An existing worker-local artifact manifest remains a list of `{path, sha256}`
|
|
8
|
+
rows with optional `bytes`. Select its exact original path and SHA-256 in the
|
|
9
|
+
task selector's `artifactManifest`. All reviewed evidence must be represented,
|
|
10
|
+
except the separately normalized original native checkpoints.
|
|
11
|
+
|
|
12
|
+
When necessary reviewed evidence lives outside the worker workspace, prepare a
|
|
13
|
+
new selection file in an owned evidence directory, without changing the worker's
|
|
14
|
+
original manifest. Its shape is:
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"format": "topolo-selected-task-artifacts-v1",
|
|
19
|
+
"taskId": "<the existing task>",
|
|
20
|
+
"workerId": "<its existing execution worker>",
|
|
21
|
+
"artifacts": [{"path": "<exact source file>", "sha256": "<exact SHA-256>"}]
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The selection is bound by its own path and digest. An outside-workspace artifact
|
|
26
|
+
is eligible only when its exact path and digest already occur in that task's
|
|
27
|
+
reviewed evidence. This does not grant access to an arbitrary directory. Files
|
|
28
|
+
must remain owned, single-link, non-symlink ordinary files with unchanged bytes
|
|
29
|
+
and no group/world write permission. Missing or changed historical sources fail
|
|
30
|
+
explicitly; no fallback or invented copy is accepted.
|
|
31
|
+
|
|
32
|
+
If the live original path has advanced, an explicit selection may add
|
|
33
|
+
`contentPath` to a row already present in the task's reviewed evidence. It names
|
|
34
|
+
an owned immutable archive inside the selected manifest's directory. Its bytes
|
|
35
|
+
must match the **original reviewed SHA-256** exactly. The original `path` and
|
|
36
|
+
hash remain the evidence identity, with the archive path recorded separately.
|
|
37
|
+
This permits verified historical bytes without overwriting another owner's live
|
|
38
|
+
file. There is no automatic fallback, changed-hash acceptance or history upload.
|
|
39
|
+
|
|
40
|
+
The read-only `cloud_delta.selected_artifacts(task, workers, selector)` preflight
|
|
41
|
+
checks the whole selection before any upload. The delta command preflights every
|
|
42
|
+
selected task before preparing cloud context. A TASK-CONTINUATION.json packet
|
|
43
|
+
must belong to the same task; each absolute file reference in its proof mapping
|
|
44
|
+
must be explicitly selected and hash-verified. Native checkpoints, JSON/JSONL
|
|
45
|
+
session histories, prompts and reasoning are refused as artifacts. The portable
|
|
46
|
+
manifest retains original source paths and hashes alongside each verified cloud
|
|
47
|
+
artifact reference. Existing task/claim/intent custody and effects remain unchanged.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Cloud task continuity
|
|
2
|
+
|
|
3
|
+
Topolo Agent supplies reusable specialization. Task records, owner/effect
|
|
4
|
+
identities, checkpoints and evidence belong in Docs and Bytes. A native chat is
|
|
5
|
+
an execution surface, never the task authority.
|
|
6
|
+
|
|
7
|
+
## Evidence recovery
|
|
8
|
+
|
|
9
|
+
`topolo agent-packs work-recover --reference recovery-reference.json --destination NEW_DIRECTORY`
|
|
10
|
+
|
|
11
|
+
The small portable reference identifies an organization-scoped Bytes archive
|
|
12
|
+
and its compressed and uncompressed hashes. The command downloads it using the
|
|
13
|
+
currently authenticated production organization credential, verifies every file,
|
|
14
|
+
and restores content-addressed objects and a path index. It never restores old
|
|
15
|
+
absolute paths, native transcripts, credentials, a dispatch database, or worker
|
|
16
|
+
ownership. Missing original files remain explicit. The destination must be new.
|
|
17
|
+
This command does not read an existing AgentPacks library.
|
|
18
|
+
|
|
19
|
+
Evidence recovery establishes continuity of the snapshot. It does not establish
|
|
20
|
+
that remote work is currently active, that every source checkout can be rebuilt,
|
|
21
|
+
or that a held/UNKNOWN operation can safely be repeated.
|
|
22
|
+
|
|
23
|
+
## Mutable cloud ledger (release-gated)
|
|
24
|
+
|
|
25
|
+
`cloud_work.CloudStore` requires the published Docs conditional-version contract
|
|
26
|
+
(`expectedCurrentVersionId`) and bounded current-state reads (`includeHistory`).
|
|
27
|
+
Do not enable it against an older catalog. It uses one Docs-selected generation
|
|
28
|
+
and an immutable Bytes retained inventory. Each operation reads the current
|
|
29
|
+
generation and conditionally publishes the next. A conflicting write is refused;
|
|
30
|
+
a lost acknowledgement is reconciled once by the exact operation identity.
|
|
31
|
+
Unavailable cloud state never falls back to local SQLite.
|
|
32
|
+
|
|
33
|
+
Both `work/config.json` authority `topolo-docs` and a complete `work/cloud.json`
|
|
34
|
+
binding must be installed together. The selected cloud body must explicitly be
|
|
35
|
+
activated. A prepared migration snapshot grants no execution authority. The
|
|
36
|
+
installation identity is unique: startup cannot adopt another installation's
|
|
37
|
+
workers, and dispatch skips tasks owned elsewhere. Continuation uses the existing
|
|
38
|
+
task identity after terminal-worker reconciliation and explicit checkpoint adoption.
|
|
39
|
+
|
|
40
|
+
The active document is bounded to 900,000 characters. Archival beyond that limit
|
|
41
|
+
is not implemented; reaching the limit refuses further writes visibly. This is
|
|
42
|
+
not a claim of an unlimited production task service.
|
|
43
|
+
|
|
44
|
+
## Activation acceptance
|
|
45
|
+
|
|
46
|
+
Before cutting over: quiesce the current owner, preserve a matching final
|
|
47
|
+
snapshot, verify the published production guard with a real competing-writer
|
|
48
|
+
test, verify exact task/context/evidence identity from an empty installation,
|
|
49
|
+
and reconcile all current native workers. Install the cloud authority fence
|
|
50
|
+
before allowing dispatch. Validate request idempotency, lost-response recovery,
|
|
51
|
+
foreign-owner refusal and live GUI activity. Do not mark migration complete on
|
|
52
|
+
the basis of unit tests or an evidence-only restore.
|
|
53
|
+
|
|
54
|
+
Claude Desktop settings/adoption require their own native acknowledgement.
|
|
55
|
+
Writing CLI settings or importing a seed is not proof of Desktop bypass mode,
|
|
56
|
+
model selection, specialist dispatch or successful execution.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
The CI/CD operating reference is an existing private Docs runbook, separate from
|
|
2
|
+
role instructions and current task state. `cicd.json` records its reviewed immutable
|
|
3
|
+
version and selected heading. Put this reference in `config.domainContextRefs`
|
|
4
|
+
(as a one-element array) on the existing CI/CD coordinator and its five specialist
|
|
5
|
+
Agent definitions through their supported draft lifecycle. Keep
|
|
6
|
+
`config.specialization` limited to format, logicalId and instructions, with purpose
|
|
7
|
+
matching instructions.
|
|
8
|
+
|
|
9
|
+
Installation discovery binds these exact references alongside each role's
|
|
10
|
+
instruction digest. It refuses CI/CD definitions without one reviewed reference.
|
|
11
|
+
Every selected role materialization fetches and validates that immutable Docs
|
|
12
|
+
version and heading before native startup, even when an existing task packet is
|
|
13
|
+
cached. Only the selected section enters `context/release-controller.md`; no old
|
|
14
|
+
task history or whole runbook is injected. The Docs transport can return bounded
|
|
15
|
+
version history because the released get contract has no separate exact-version
|
|
16
|
+
read. The resolver limits history to128 versions, the selected body to1MB and the
|
|
17
|
+
selected section to12KB; it refuses a missing pinned version instead of using a
|
|
18
|
+
newer version silently.
|
|
19
|
+
|
|
20
|
+
Current authority endpoints, access bindings, fleet state and exact release IDs
|
|
21
|
+
belong in the task's existing Docs/Bytes packet. The runbook identifies supported
|
|
22
|
+
read interfaces; it does not grant credentials, transfer ownership or authorize
|
|
23
|
+
mutations. Updating source authoring files alone does not change hosted Agent
|
|
24
|
+
records or activate the Desktop launcher. Review, native readback and normal
|
|
25
|
+
source release remain separate gates.
|