Revert "merge: integrate extension auto-update"

This reverts commit 322475860a, reversing
changes made to f52d9d7413.
This commit is contained in:
inman committed 2026-09-03 16:45:14 +08:00
1 parent b2e33e2e5d
commit 81a0cdac8e
47 files changed
+169 -3108

No files matched your search

+3 -4
View File
@@ -17,7 +17,6 @@
| Operational diagnostics | Service, request, task, parser, AgentBus, attachment, database, and cleanup stages | Structured stdout/stderr and bounded Docker logs | Correlation identifiers, codes, outcomes, and durations only; no secrets or business payloads. |
| Platform operations oversight | Manual task creator, encrypted instruction history, and readable outcome | Team-lead/administrator leadership projection | Display-only summaries plus explicit filters drive an aggregate-first task/person/input/output/time/type/completion view; list reads are bounded to one read-only connection and hydrate full details only for the current page. |
| Browser worker selection | Immutable task assignee | One fresh account-bound browser connection | The heartbeat must match the account's expected ERP identity; a second fresh worker or identity mismatch is non-executable, with failover only after staleness. |
| Extension release and host update | Administrator ZIP → private OSS release → account-mapped ECS Windows host | Shared unpacked-extension directory → profile reload → verified heartbeat | The central service validates and content-addresses each monotonic release, waits for every mapped account to be ERP-idle, sends one bounded Cloud Assistant command, verifies hash/Manifest and rollback-safe deployment, then blocks new claims until each browser reports the target version. |
| Account-scoped ERP queue | Confirmed task assignee | Assigned account's browser worker | Organization-plus-account advisory locking preserves FIFO and at most one active execution for that account; another account's active, queued, stale, or uncertain work is outside this queue. |
| Executable event and result routing | Immutable task assignee | Matching authenticated platform page and plugin | SSE history/live events, claims, plugin results, and browser cleanup commands never use administrator-wide visibility and fail closed when the authenticated account is not the assignee. |
| Task removal | Authorized operator | Archive/restore or permanent force delete | Archive/restore remains reversible and state-gated. Explicit force delete has no lifecycle-state gate, removes task-owned platform records atomically, retains a minimal deletion audit marker, and performs post-commit artifact/plugin cleanup best effort. |
@@ -26,8 +25,8 @@
## State Ownership
- PostgreSQL owns durable control-plane account, role, expected ERP identity, ECS host mapping, approved extension release metadata, host update state, task-route grant, AgentBus channel owner, immutable task assignee, account-scoped queue/lease state, browser worker, session, confirmation, audit, archive, and outcome state. A force-deleted task no longer exists in task state; only its minimal non-content deletion audit marker remains.
- Production attachment bytes and private immutable extension release packages use the configured OSS provider; normalized sensitive fields remain encrypted.
- PostgreSQL owns durable control-plane account, role, expected ERP identity, task-route grant, AgentBus channel owner, immutable task assignee, account-scoped queue/lease state, browser worker, session, confirmation, audit, archive, and outcome state. A force-deleted task no longer exists in task state; only its minimal non-content deletion audit marker remains.
- Production attachment bytes use the configured OSS provider; normalized sensitive fields remain encrypted.
- Chrome extension local state is bounded execution/reconciliation support, not canonical business history.
- `.project-docs/30-worklog/tasks/` owns task-local project memory; canonical project state is an integrated projection.
@@ -36,7 +35,7 @@
- Operator workbench at the control-plane service.
- AgentBus WebSocket channels and attachment delivery.
- Logged-in ERP browser pages under the Chrome extension host permissions.
- PostgreSQL, OSS, deployment gateway, authenticated artifact download, Alibaba ECS Cloud Assistant APIs, and the host-bound HTTPS extension package route.
- PostgreSQL, OSS, deployment gateway, and authenticated artifact download.
## Last Updated
@@ -10,9 +10,9 @@ Authenticated manual or account-bound AgentBus input is routed through task-scop
|---|---|---|
| `agent设计规范/` | Agent Prompt, five parsing Skills, business templates, business registry, and stable fixtures | Editable source for business semantics; not runtime evidence |
| `schemas/` and `mappings/` | Parse-state, execution-state, ERP form, field, and lifecycle contracts | Current contracts only |
| `control-plane/` | Task/session persistence, parser orchestration, confirmation, audit, AgentBus channel ownership, task assignment, browser workers, private extension release/host-update orchestration, attachments, receipts, and structured diagnostics | TypeScript source; build output goes to `.build/` |
| `control-plane/` | Task/session persistence, parser orchestration, confirmation, audit, AgentBus channel ownership, task assignment, browser workers, attachments, receipts, and structured diagnostics | TypeScript source; build output goes to `.build/` |
| `LianSyn-platform/` | Operator workbench and external parser adapter | Source and UI, not local task output |
| `chrome-extension/ltjt-order-assistant/` | Logged-in ERP resolution, preflight, native execution, response handling, requery, update-safety proof, and idle runtime reload | Any code change requires synchronized versioned release updates |
| `chrome-extension/ltjt-order-assistant/` | Logged-in ERP resolution, preflight, native execution, response handling, and requery | Any code change requires synchronized versioned release updates |
| `dist/` | Versioned current deliverables and machine-readable release manifest | Not a compilation directory |
| `.project-docs/` | Task-isolated project memory and integrated canonical context | No runtime dependency |
| `archive/` | Date-scoped immutable history and evidence | Never defines current behavior |
@@ -28,12 +28,10 @@ Authenticated manual or account-bound AgentBus input is routed through task-scop
- Each enabled AgentBus channel owns one active non-admin employee account. Inbound work uses that account and route allowlist, persists the same account as immutable task assignee, and is returned only to that account's executable feed.
- Each employee account has one expected ERP identity and at most one fresh browser execution worker. Mismatched ERP identity, concurrent fresh workers, unbound channels, or unassigned tasks fail closed. Browser claims, active-execution checks, and confirmed FIFO are serialized per immutable task assignee, so one account cannot block or occupy another account's queue.
- Administrator-wide task visibility is a read model, not an executable feed. Task SSE history/live events, browser claims, plugin-result ingestion, and browser cleanup commands are always scoped to the authenticated account matching `assigned_user_id`, including for administrators.
- The separate central service owns approved extension versions and maps multiple employee accounts to shared Alibaba ECS Windows hosts. Private OSS stores immutable packages; one-shot ECS Cloud Assistant PowerShell updates only the configured `ProgramData\LTJT` directory after every mapped account is idle. Update start and ERP claim share an organization serialization boundary, and a browser below the active release cannot receive new ERP work.
- Extension file deployment is not release acceptance. Every Chrome profile reloads only after its own in-memory and durable execution state is safe, then reports the active version through a fresh heartbeat. Existing profiles require one manual `0.5.167` bootstrap from the shared directory before this automatic path is enabled.
- Creator and manual input-turn attribution remain durable while business input stays encrypted at rest. Routine removal is reversible archive/restore. Separately confirmed force delete physically removes an authorized task regardless of lifecycle state, retains only a minimal non-content deletion audit marker, and cannot undo an ERP write that already occurred.
- Unknown, ambiguous, unverified, or post-write-uncertain states fail closed; automatic retries must not create duplicate writes.
- PostgreSQL is the sole required durable database/state middleware, and the production artifact provider is OSS. Redis, message queues, MongoDB, and search services are not runtime dependencies.
- Migrations through `019_extension_host_updates` must complete before the updated application starts. The current ACK topology starts with one application replica because AgentBus listeners, SSE emission, and bounded extension-update polling are process-local; horizontal scale requires explicit coordination first.
- Migrations through `018_agentbus_account_workers` must complete before the updated application starts. The current ACK topology starts with one application replica because AgentBus listeners and SSE emission are process-local; horizontal scale requires explicit coordination first.
- Operational diagnostics are privacy-safe structured JSON on stdout/stderr. Docker owns bounded rotation; repository files and a second mutable log database are not log sinks.
- In the trusted internal deployment, AgentBus roster attachment downloads may resolve to private/reserved addresses. Credential-free HTTPS, DNS resolution/pinning, redirect revalidation, size, timeout, and digest checks remain mandatory, and trusted channels/bridges own the network-input boundary.
- Canonical project memory is updated only under Integration Gate; feature tasks write only their task-scoped records.
@@ -48,7 +46,6 @@ Authenticated manual or account-bound AgentBus input is routed through task-scop
- NETWORK-001
- AUTH-001
- AUTH-002
- EXT-001
## Last Updated