Commit Graph
22 Commits
Author SHA1 Message Date
Cursor AgentandTom Huang 2d8f556b3b docs(plugins): record X-series landing in living plan + CHANGELOG
Plan X2 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the X-series shipped this turn:

  X1. `od plugin pack <folder>` distribution archive

The Phase 4 author dev-loop is now closed end-to-end:

  od plugin scaffold --id <id>          # bootstrap a folder
  od plugin validate <folder>           # lint before install
  od plugin pack <folder>               # build a .tgz archive
  od plugin install --source <path>     # install (local OR https)
  od plugin export <projectId>          # build a publish-ready folder
  od plugin publish ...                 # generate catalog PR link

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 16:28:30 +00:00
Cursor AgentandTom Huang fbddf11f8b docs(plugins): record W-series landing in living plan + CHANGELOG
Plan W2 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the W-series shipped this turn:

  W1. `od plugin validate <folder>` author-side lint

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 16:22:50 +00:00
Cursor AgentandTom Huang e026a54fd9 docs(daemon): record V-series landing in living plan + CHANGELOG
Plan V2 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the V-series shipped this turn:

  V1. OD_BUNDLED_ATOM_PROMPTS default flipped to ON

Living plan now reads:
  Phase 4 \u2192 'full incl. OD_BUNDLED_ATOM_PROMPTS default ON'

Remaining backlog: postgres adapter wiring inside the DaemonDb
resolver — the only stubbed item left.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 16:16:29 +00:00
Cursor AgentandTom Huang 0ddd29aeb6 docs(daemon): record U-series landing in living plan + CHANGELOG
Plan U2 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the U-series shipped this turn:

  U1. S3ProjectStorage live impl via AWS SigV4

Living plan now reads:
  Phase 5 \u2192 'full incl. live S3 impl; postgres adapter still stubbed'

Remaining backlog:
  - Promote OD_BUNDLED_ATOM_PROMPTS=1 to default (audit-blocked)
  - Postgres adapter wiring inside DaemonDb resolver

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 16:11:10 +00:00
Cursor AgentandTom Huang 798ffaec48 docs(plugins): record T-series landing in living plan + CHANGELOG
Plan T3 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the T-series shipped this turn:

  T1. runAndPersistHandoff() + auto-handoff from diff-review bridge
  T2. figma-migration pipeline e2e smoke test

Phase 8 promotion ladder now closes end-to-end without an agent turn:
GenUI Accept \u2192 review/decision.json + handoff/manifest.json with
handoffKind set.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 16:03:37 +00:00
Cursor AgentandTom Huang 4c3423a500 docs(plugins): record S-series landing in living plan + CHANGELOG
Plan S3 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the S-series shipped this turn:

  S1. runHandoffAtom() pipeline-driven promotion-ladder bridge
  S2. Full code-migration pipeline e2e smoke test

Living plan now records:
  Phase 7 \u2705 + 'full pipeline e2e covered by smoke test'
  Phase 8 \u2705 + 'handoff promotion ladder bridge landed'

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 15:56:54 +00:00
Cursor AgentandTom Huang c1f6d1f02d docs(plugins): record R-series landing in living plan + CHANGELOG
Plan R2 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the R-series shipped this turn:

  R1. diff-review GenUI \u2192 review/decision.json bridge

Living plan now reads:
  Phase 8 → \u2705 COMPLETE end-to-end. Patch substrate +
    diff-review atom + auto-surface + native UI mount + GenUI \u2192
    runDiffReview bridge all landed.
  Phase 6 → \u2705 COMPLETE.
  Phase 7 → \u2705 COMPLETE.

Remaining backlog:
  - Promote OD_BUNDLED_ATOM_PROMPTS=1 to default (audit-blocked)
  - AWS SDK wiring inside S3ProjectStorage
  - Postgres adapter wiring inside DaemonDb resolver

Changelog names every shipped surface so a reviewer can audit the
delta without reading the plan.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 15:49:50 +00:00
Cursor AgentandTom Huang 72ec5fb176 docs(plugins): record Q-series landing in living plan + CHANGELOG
Plan Q3 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the Q-series shipped this turn:

  Q1. Native diff-review UI on GenUISurfaceRenderer  (Phase 8 entry slice)
  Q2. figma-extract asset rasterisation second pass  (Phase 6 entry slice)

Living plan now reads:
  Phase 6 → COMPLETE: figma-extract REST + token-map crosswalk +
    asset rasterisation second pass via GET /v1/images.
  Phase 8 → patch + review + auto-surface + native review UI all
    landed. The remaining slice is wiring the GenUI response back
    through runDiffReview() to auto-update review/decision.json
    (today the daemon stores the response on the run; the
    diff-review runner reads it on next invocation).

Changelog names every shipped surface so a reviewer can audit the
delta without reading the plan.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 15:41:46 +00:00
Cursor AgentandTom Huang e135739f99 docs(plugins): record P-series landing in living plan + CHANGELOG
Plan P4 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the P-series shipped this turn:

  P1. token-map atom impl                       (Phase 6/7 entry slice)
  P2. figma-extract atom impl                   (Phase 6 entry slice)
  P3. Auto-derived choice surface for diff-review (Phase 8 entry slice)

Living plan now reads:
  Phase 6 → COMPLETE: figma-extract REST shell-out + token-map
    crosswalk both implemented. Bundled scenario plugin
    od-figma-migration ships the canonical pipeline. Asset
    rasterisation second pass (offlineAssets=false) stays
    scheduled.
  Phase 7 → COMPLETE (continued from O-series): all six atom impls.
  Phase 8 → patch + review + auto-surface substrate landed; native
    UI mount in the web composer stays scheduled.

Changelog names every shipped surface so a reviewer can audit the
delta without reading the plan.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 15:32:23 +00:00
Cursor AgentandTom Huang 01e94a92be docs(plugins): record O-series landing in living plan + CHANGELOG
Plan O6 — sync docs/plans/plugins-implementation.md and CHANGELOG.md
with the O-series shipped this turn:

  O1. Bundled-scenario pipeline fallback resolver (spec §23.3.3)
  O2. design-extract atom impl                    (Phase 6/7 entry slice)
  O3. rewrite-plan atom impl                      (Phase 7 entry slice)
  O4. patch-edit atom impl                        (Phase 7 entry slice)
  O5. diff-review atom impl                       (Phase 7-8 entry slice)

Living plan now reads:
  Phase 7 → ALL SIX atoms IMPLEMENTED (build-test + code-import +
    design-extract + rewrite-plan + patch-edit + diff-review).
    Bundled scenario plugin od-code-migration ships the canonical
    pipeline. Live HTTP wiring for the per-stage runner stays
    scheduled.
  Phase 8 → patch + review substrate landed; native review-and-apply
    UI mounting diff-review through a GenUI choice surface stays
    scheduled.
  Phase 6 → SKILL.md substrate + scenario plugin registered;
    design-extract impl is reused under the figma-migration
    flow as well.

Changelog names every shipped surface so a reviewer can audit the
delta without reading the plan.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 15:19:04 +00:00
Cursor AgentandTom Huang 1d142b4214 docs(plugins): record N-series landing in living plan + CHANGELOG
Plan §3.N5 — sync docs/plans/plugins-implementation.md and
CHANGELOG.md with the N-series shipped this turn:

  N1. build-test atom shell-out runner (Phase 7 entry slice)
  N2. code-import atom repo walker      (Phase 7 entry slice)
  N3. handoff helper + ArtifactManifest provenance fields
                                        (Phase 7-8 entry slice)
  N4. Bundled scenario plugins          (spec §23.3.3)

Living plan now reads:
  Phase 7 → build-test + code-import IMPLEMENTED; design-extract +
    rewrite-plan + patch-edit + diff-review remain SKILL.md
    substrate.
  Phase 8 → handoff helper + provenance fields IMPLEMENTED; native
    review-and-apply UI remains scheduled.
  Phase 6 → SKILL.md substrate + scenario plugin registered;
    Figma REST + token-map heuristic remain scheduled.

Changelog names every shipped surface so a reviewer can audit the
delta without reading the plan.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 14:57:23 +00:00
Cursor AgentandTom Huang 4aec507cd3 docs(plugins): record M-series — retention TTL + atom prompt rewiring + Phase 6/7/8 substrate
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - OD_SNAPSHOT_RETENTION_DAYS referenced-row TTL (PB2 closed).
  - OD_BUNDLED_ATOM_PROMPTS=1 activates composeDaemonSystemPrompt's
    atom-block branch (default off; byte-equal to today's prompt).
  - Nine new bundled atom SKILL.md fragments under
    plugins/_official/atoms/ for Phases 6, 7, and 8.

docs/plans/plugins-implementation.md §6 Phase 6 / 7 / 8 deliverables
record their substrate-shipped state; the actual implementations
remain scheduled. §9 Status snapshot updated; next-planned-PR cell
moves the AWS SDK / postgres adapter wiring + Phase 6 / 7 / 8
shell-out implementations + the OD_BUNDLED_ATOM_PROMPTS default
flip to the head of the queue.

Final gates: pnpm guard ✓, daemon 1521 tests ✓, web 586 tests ✓,
contracts 12 tests ✓, agui-adapter 9 tests ✓, plugin-runtime 21.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 14:25:22 +00:00
Cursor AgentandTom Huang 35b4030834 docs(plugins): record L-series — Helm overrides + activeStageBlocks + asset route + storage substrate
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - Per-cloud Helm value overrides (AWS / GCP / Azure / Aliyun /
    Tencent / Huawei / self-hosted).
  - composeSystemPrompt accepts activeStageBlocks so a future PR can
    swap inline DISCOVERY_AND_PHILOSOPHY for SKILL.md fragments.
  - Plugin-bundled component surface (sandboxed iframe) +
    GET /api/plugins/:id/asset/* with §9.2 CSP.
  - ProjectStorage + DaemonDb adapter substrate (Local impl wired,
    S3 + postgres stubs interface-locked).

docs/plans/plugins-implementation.md §3 / §6 / §9 flipped:
  - Phase 5 deliverables: chart templates + per-cloud overrides +
    bound-API-token guard + ghcr CI + ProjectStorage + DaemonDb all
    record their landed shipped state.
  - §6 Phase 4 absorbs the activeStageBlocks composer field +
    surface.component sandbox loader as shipped slices.
  - §9 Status snapshot updated; head of the queue is now the live
    composeSystemPrompt rewiring + AWS SDK / postgres adapter
    wiring + OD_SNAPSHOT_RETENTION_DAYS referenced-row TTL +
    Phase 6/7/8 native scenarios.

Final gates: pnpm guard ✓, daemon 1516 tests ✓, web 586 tests ✓,
contracts 12 tests ✓, agui-adapter 9 tests ✓, plugin-runtime 21.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 14:01:29 +00:00
Cursor AgentandTom Huang d0dbc7314f docs(plugins): record K-series — bound-API-token + Helm + surface.component + ghcr CI
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - Phase 5 bound-API-token guard (startServer refusal + bearer
    middleware on /api/*).
  - Helm chart templates (Deployment / Service / Secret / ConfigMap /
    PVCs / Ingress / NOTES).
  - od.genui.surfaces[].component manifest field + capability gate.
  - GitHub Actions multi-arch image push to ghcr.io.

docs/plans/plugins-implementation.md §6 / §9 flipped:
  - Phase 5 bound-API-token guard, CI push, Helm templates → shipped.
  - Phase 4 surface.component manifest upgrade → shipped (substrate;
    web sandbox loader stays scheduled).
  - §9 Status snapshot updated; head of the queue is now the
    composeSystemPrompt rewiring + the web custom-component sandbox
    loader + ProjectStorage S3 adapter + DaemonDb Postgres adapter +
    per-cloud values-<cloud>.yaml override files + Phase 6 / 7 / 8.

Final gates: pnpm guard ✓, daemon 1496 tests ✓, web 586 tests ✓,
contracts 12 tests ✓, agui-adapter 9 tests ✓, plugin-runtime 21 tests ✓.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 13:42:54 +00:00
Cursor AgentandTom Huang 735b7bdffb docs(plugins): record J-series — AG-UI adapter + atom-block + Phase 5 entry slice
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - @open-design/agui-adapter package + GET /api/runs/:runId/agui
    (spec §10.3.5).
  - renderActiveStageBlock + loadAtomBodies (spec §23.3.2 substrate).
  - Phase 5 Dockerfile bundles plugins/_official/, plus
    tools/pack/docker-compose.yml and tools/pack/helm/open-design/
    parameter surface.

docs/plans/plugins-implementation.md §3 / §6 / §9 flipped:
  - Architecture-state table records agui-adapter, atom-bodies,
    atom-block, docker-compose, Helm values.
  - HTTP route table marks /api/runs/:runId/agui shipped.
  - §6 Phase 4 'AG-UI adapter package' deliverable flips. The
    'plugins/_official/atoms/<atom>/SKILL.md extraction' deliverable
    is recorded as substrate-shipped; the composeSystemPrompt
    rewiring stays as the next planned PR.
  - §6 Phase 5 deliverable list flips Dockerfile + docker-compose +
    Helm + snapshot retention worker; the bound-API-token guard +
    pluggable storage / Postgres adapters stay open.
  - §9 Status snapshot updated; head of the queue is now the
    composeSystemPrompt rewiring + od.genui.surfaces[].component
    upgrade + CI pushing :edge / :<version> + bound-API-token guard
    + Postgres / S3 adapters.

Final gates: pnpm guard ✓, daemon 1486 tests ✓, web 586 tests ✓,
contracts 12 tests ✓, agui-adapter 9 tests ✓.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 13:24:53 +00:00
Cursor AgentandTom Huang d06c1b4905 docs(plugins): record I-series — pipeline-into-startChatRun + doctor/config + bundled atoms
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - Pipeline runner wired into POST /api/runs (e2e-3 full §8 contract).
  - od doctor (repo-wide diagnostics) + od config get/set/list/unset.
  - Phase 4 §23 entry slice — bundled atom plugins + boot walker.

docs/plans/plugins-implementation.md §3 / §6 / §8 / §9 flipped:
  - Architecture-state table records scaffold / export / publish /
    bundled / plugins/_official/atoms as shipped.
  - §6 Phase 4 deliverable list flips bundled atom extraction +
    full CLI parity remainder; the system.ts → SKILL.md prompt
    rewiring stays open as the next planned PR.
  - §8 e2e-3 row flips from entry-slice to full §8 contract:
    plugins-headless-run.test.ts asserts the first SSE event on a
    pipeline-bearing run is pipeline_stage_started.
  - §9 Status snapshot updated; head of the queue is now
    composeSystemPrompt() reading atom fragments from
    plugins/_official/atoms/<atom>/SKILL.md, then the AG-UI adapter,
    then Phase 5 Docker image.

Final gates: pnpm guard ✓, daemon 1481 tests ✓, web 586 tests ✓.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 13:03:57 +00:00
Cursor AgentandTom Huang 26c5a27cf9 docs(plugins): record Phase 4 publish + CLI parity remainder
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - Phase 4 publish CLI (od plugin publish --to <catalog> [--open]).
  - CLI parity remainder (od atoms / skills / design-systems / craft /
    status / version).
  - od marketplace search across configured catalogs.

docs/plans/plugins-implementation.md §3 / §6 / §9 flipped:
  - The CLI table records publish + atoms + skills + design-systems +
    craft + status + version + marketplace search as shipped, with the
    only remaining open verbs being od doctor + od config get/set/list.
  - Phase 4 deliverable list flips publish to shipped.
  - Status snapshot moves marketplace search and library CLI parity
    out of next-planned and into shipped; head of the queue is now the
    pipeline-runner-into-startChatRun integration plus Phase 4 atom
    migration into plugins/_official/ and the AG-UI adapter package.

Final gates: pnpm guard ✓, daemon 1475 tests ✓, web 586 tests ✓.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 12:44:16 +00:00
Cursor AgentandTom Huang a1798ba47d docs(plugins): record Phase 4 author tooling + Phase 2B marketplace UI
CHANGELOG.md ## Unreleased gets a new bullet block summarising:
  - Phase 4 author tooling: od plugin scaffold + od plugin export with
    provenance README + claude-plugin / agent-skill targets.
  - Phase 2B marketplace deep UI: /marketplace + /marketplace/:id
    routes, MarketplaceView grid + filters + configured catalogs panel,
    PluginDetailView with capability + connector + GenUI surface
    summaries plus a 'Use this plugin' button.
  - Phase 2B ChatComposer mount of PluginsSection.
  - docs/atoms.md as the canonical first-party atom catalog reference.

docs/plans/plugins-implementation.md §3 / §6 / §9 flipped:
  - The web component table now records MarketplaceView + PluginDetailView
    as shipped (with the routes attached) and the ChatComposer rail mount
    flipped from absent → shipped.
  - The CLI table records od plugin scaffold + od plugin export as
    shipped Phase 4 deliverables; od plugin publish stays absent.
  - The Phase 4 deliverable list flips: docs/atoms.md, scaffold, export,
    and run shorthand are all checked. Atom migration into
    plugins/_official/, AG-UI adapter, plugin manifest .component
    capability, and CLI parity remainder stay open.
  - §9 Status snapshot updated; next-planned-PR cell moves the
    pipeline-runner-into-startChatRun integration to the head of the
    queue and points at the remaining Phase 4 / 5 backlog.

Final gates: pnpm guard ✓, daemon 1465 tests ✓, web 586 tests ✓.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 12:33:38 +00:00
Cursor AgentandTom Huang 0e92952ac7 docs(plugins): record Phase 1 follow-up + 1.5 + 2B mount + 3 install resolution
CHANGELOG.md gets a new bullet block summarising:
  - Phase 1 follow-up CLI (od project / run / files / conversation).
  - Phase 1.5 headless lifecycle (od daemon start --headless / --serve-web /
    status / stop) with backing /api/daemon/status + /api/daemon/shutdown.
  - Phase 3 'od plugin install <name>' resolution through configured
    marketplaces.
  - Web composer mount: PluginsSection + NewProjectPanel integration.

docs/plans/plugins-implementation.md §3 / §6 / §8 / §9 flipped:
  - The Phase 1.5 deliverable list moves from open boxes to shipped
    rows.
  - The CLI table moves od project / run / files / conversation /
    daemon to shipped, with the lone remaining deferrals (od files
    diff, od project import, od conversation new, od marketplace
    search) called out explicitly.
  - The web component table records PluginsSection + the
    NewProjectPanel mount as shipped, with the deeper ChatComposer
    mount + MarketplaceView + PluginDetailView still scheduled for
    Phase 2B.
  - Phase 3 marks 'od plugin install <name>' as shipped; the Phase 3
    items still open are: trust UI, bundle-plugin installer, full
    doctor expansion.
  - §8 e2e-3 flips to entry-slice complete (HTTP-layer walkthrough);
    the live-agent-loop integration moves to the next-planned-PR cell.
  - §9 Status snapshot updated.

Final gates green: pnpm guard ✓, daemon 1455 tests ✓, web 579 tests ✓.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 12:16:15 +00:00
Cursor AgentandTom Huang 20285c9959 docs(plugins): flip Phase 2A boxes + record Phase 3/5 entry slices
Plan §3 architecture state, §6 phase deliverables, §8 definition of done,
§9 status snapshot all updated to reflect the work that landed in this
branch.

CHANGELOG.md gets a new ## Unreleased bullet summarising the daemon /
CLI / web slice, with explicit pointers to the e2e test paths that
anchor each §8 row.

Phases / slices that flipped to shipped:

  - All Phase 2A daemon deliverables (pipeline, pipeline-runner,
    connector-gate, GenUI registry/store/events, snapshot resolver,
    SQLite migrations, HTTP routes, SSE / ND-JSON event emission, PB1
    renderer in contracts).
  - Phase 2A CLI: trust mutation, --grant-caps, --input k=v, recoverable
    exit codes 64–73, ui list/show/respond/revoke/prefill, plugin
    replay, plugin run shorthand, plugin snapshots prune.
  - Phase 2A web: applyPlugin() helper, InlinePluginsRail,
    ContextChipStrip, PluginInputsForm, GenUISurfaceRenderer
    (confirmation + oauth-prompt first-class), GenUIInbox.
  - Phase 3 entry slice: marketplace registry + od marketplace add /
    list / info / refresh / remove / trust + matching HTTP routes.
    Plugin-name resolution + trust UI stay scheduled.
  - Phase 5 (early): snapshot GC worker + applied-plugins audit
    routes + od plugin snapshots prune.

§8 Definition of Done: e2e-1, e2e-2, e2e-4, e2e-5, e2e-6, e2e-7, e2e-8
all anchored to specific daemon test paths. e2e-3 (headless run) stays
TBD pending Phase 1.5.

Status snapshot: Phase 2A finished + entry slices of Phase 2B/2C/3 +
early Phase 5; next planned PRs: Phase 1.5 headless flag (e2e-3
unblock), Phase 2B marketplace deep UI, Phase 3 `od plugin install
<name>` resolution + trust UI.

Co-authored-by: Tom Huang <1043269994@qq.com>
2026-05-09 11:54:29 +00:00
pftom 4c7cd5d9f2 feat(plugins): introduce plugin system with installation and management capabilities
- Added support for a new plugin system, allowing users to install, uninstall, and manage plugins through the daemon.
- Implemented API endpoints for listing installed plugins, retrieving plugin details, and applying plugins with input validation.
- Introduced a plugin doctor feature to validate plugin manifests and check for issues before application.
- Established a plugin persistence layer with SQLite migrations for managing installed plugins and their metadata.
- Enhanced the CLI with commands for plugin operations, improving user interaction with the plugin ecosystem.
2026-05-09 18:24:44 +08:00
pftom 8d7f914b55 docs(plugins): enhance plugin specification and introduce implementation roadmap
- Added a new section detailing the implementation plan for the Open Design Plugin & Marketplace, serving as a living roadmap for future development.
- Updated the plugin specification to include the `expires_at` column in the `applied_plugin_snapshots` table, clarifying its role in snapshot retention and garbage collection.
- Revised the structure of the plugin block renderer, lifting it into the contracts layer to eliminate byte-equality drift and streamline plugin support across different consumption modes.
- Documented the phased approach to plugin functionality, ensuring clarity on the current capabilities and future enhancements within the plugin ecosystem.
2026-05-09 17:28:31 +08:00