Commit Graph

15 Commits

Author SHA1 Message Date
Connor Byrne
528d014e15 build(extension-api): regenerate .d.ts for hygiene cleanup (wave-11)
Hand-patched mirror of foundation hygiene cleanup per AGENTS.md Rule 8
(Node 20 vs vite blocks `pnpm build` in this worktree):

- Strip HR-style section dividers
- Strip parenthetical decision archaeology
  ((per D5), (D-immutability-enforcement, Hybrid C),
  D-bootstrap-hooks (W6.P6.C), D-shell-ui-entrypoints (W6.P5.C), etc.)
  from per-export JSDoc — preserve AXIOMS.md §A1/A14/A15/A16/A12 refs
  and PHASE_A_EXCLUDED axiom blocks (functional content).
- Strip "W6.P8.UNMIGRATABLE / D-input-output-shape" todo refs.
- One stale `defineWidgetExtension` JSDoc example fixed (was already
  on foundation; rebase carried the fix through).

Mirrors foundation commit `ee0537fdb5`.

ADR: decisions/D-design-review-hygiene-cleanup.md
Zero published-surface change (no types added/removed/renamed).
2026-05-21 14:01:37 -07:00
Connor Byrne
b4fe848527 build(extension-api): regenerate .d.ts for D-ban-runtime-addwidget (wave-10)
Hand-patched mirror of foundation surface changes per AGENTS.md Rule 8
(Node 20 vs vite blocks `pnpm build` in this worktree):

- Remove `NodeHandle.addWidget(...)` method declaration (A15 closure)
- Scrub 5 JSDoc references to `node.addWidget(...)` across NodeHandle
  getWidgets doc, NodeBeforeSerialize migration example, defineWidget
  options doc, WidgetHandle name doc, WidgetHandle label doc,
  WidgetOptions doc
- Add A15 / D-ban-runtime-addwidget cross-references

Mirrors foundation commit `d5d5692928`.
2026-05-21 14:01:37 -07:00
Connor Byrne
e4f2feb6f8 chore(ext-api/pkg): rebuild .d.ts for D-widget-serialization-simplification (wave-9)
Hand-patched packages/extension-api/build/index.d.ts to match the
foundation surface after A16 closure:

- Drop `isSerializeEnabled` / `setSerializeEnabled` from WidgetHandle
- Drop `WidgetBeforeSerializeEvent.context` 4-way discriminator
- Drop `WidgetBeforeSerializeEvent.skip()`
- Drop `on('propertyChange', handler)` overload
- Drop entire `WidgetPropertyChangeEvent` interface
- Drop `WidgetOptions.serialize?: boolean` key
- Update JSDoc on `WidgetBeforeSerializeEvent` / `options` / `serializeValue`
  to reference A16 / drop transport-discriminator examples

`NodeBeforeSerializeEvent.context` is intentionally retained — the
node-level surface stays `@deprecated` + runtime-warned per ADR-0010
(not banned by D-widget-serialization-simplification).

Hand-edit pattern because pnpm build is blocked by Node 20 vs vite
requirement per AGENTS.md Rule 8. Surface verified to match foundation
HEAD e56187adf3.

Refs: decisions/D-widget-serialization-simplification.md, AXIOMS.md §A15+A16
2026-05-21 14:01:37 -07:00
Connor Byrne
e9d51335c2 chore(ext-api/pkg): rebuild .d.ts for D-coord-space (W6.P4.C) JSDoc cascade
Picks up the canvas-units / escape-hatch / A13 JSDoc on NodeHandle.{getPosition,setPosition,getSize,setSize} from foundation fa3229b402 so the published .d.ts and the docgen pipeline see the policy text. No symbol changes.
2026-05-21 14:01:37 -07:00
Connor Byrne
06fb27d233 chore(ext-api/pkg): rebuild .d.ts for D-immutability-enforcement (W6.P8.C) + D-widget-converge (W6.P3.C) cascade
Regenerates packages/extension-api/build/index.d.ts to ship the merged
foundation surface from the two cherry-picked commits:
  - df921f3512 / a22682b7fe — Hybrid C Readonly typing per
    D-immutability-enforcement (8 mutation-family accessors now readonly,
    getInputs/getOutputs renamed, widget.options + widget.serializeValue
    accessor-only).
  - 2f102353fa / d76592e95b — DOMWidget ↔ Widget convergence via mount
    lifecycle per D-widget-converge / Axiom A12. New WidgetCleanup /
    WidgetMountContext / WidgetMountFn exports; DOMWidgetOptions and
    NodeHandle.addDOMWidget() removed.

Verification:
  $ grep -c 'WidgetMountContext\|WidgetCleanup\|WidgetMountFn' build/index.d.ts
  8
  $ grep -c 'DOMWidgetOptions\|addDOMWidget' build/index.d.ts
  0

+222/-53 lines net (build/index.d.ts).
2026-05-21 14:01:37 -07:00
Connor Byrne
c2ab350cb7 feat(ext-api/pkg): D20 identity convergence cascade — rebuild .d.ts, drop *EntityId from extensionV2 stub
Cascade of D20 (decisions/D20-id-type-convergence.md) from foundation:

- Rebuild packages/extension-api/build/index.d.ts via vite build so the
  published .d.ts ships the new id/equals surface and drops the three
  demoted brand re-exports.
- src/types/extensionV2.ts: stop re-exporting NodeEntityId, WidgetEntityId,
  SlotEntityId — they are no longer in the @/extension-api barrel per D20.
  Use node.id/widget.id (string) and equals(other) for the public surface.
2026-05-21 14:01:37 -07:00
GitHub Action
83132ab5a1 [automated] Apply ESLint and Oxfmt fixes 2026-05-21 14:01:37 -07:00
Connor Byrne
42a1ba05f4 chore(ext-api/pkg): rebuild .d.ts with getWidgets() rename
Updates bundled types after foundation renamed widgets() → getWidgets().

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-21 14:01:37 -07:00
Connor Byrne
a059009dce chore(extension-api): track only .d.ts in build, not JS
Remove index.js and index.js.map from git tracking. The .d.ts file is
committed for npm package visibility and reviewer inspection, while JS
files are generated at build time and don't need to be in version control.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-21 14:01:37 -07:00
Connor Byrne
0ffb475d74 feat(ext-api/pkg): commit built .d.ts and .js to repo
- Remove build/ from .gitignore so types are visible in PR
- Update vite config to use rollupTypes for bundled declarations
- Update package.json types path to ./build/index.d.ts
- Exclude packages/*/build/ from lint-staged
- Include index.d.ts (37KB bundled types), index.js (2MB), index.js.map

The bundled index.d.ts contains all public API types inline.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-21 14:01:37 -07:00
Connor Byrne
14349fe23f fix(ext-api/pkg): build emits both .d.ts and .js via Option C (D17)
Resolves CodeRabbit findings F-12143-1, F-12143-3, F-12143-7.

Per D17-pkg2-build-strategy ADR: package now builds via Vite library
mode + vite-plugin-dts, dropping the inconsistent rootDir restriction
and the --emitDeclarationOnly flag. Vite resolves @/* aliases against
the canonical surface in main app src/extension-api/, externalizes vue
as a peer dep, and bundles to a single 3.95 kB build/index.js.
vite-plugin-dts emits the per-file .d.ts closure under build/ with
@/* imports rewritten to relative paths.

The original tsc-only plan in #12143 was unworkable because tsc does
not rewrite path aliases — emitted JS would have unresolvable @/...
imports at runtime. Vite library mode is the smallest deviation that
satisfies PKG3 acceptance ('emits BOTH .d.ts + .js') while preserving
'the barrel is the source of truth in main app src/extension-api/'
intent in packages/extension-api/AGENTS.md.

Verified:
  pnpm build emits build/index.js (3.95 kB) + build/.../*.d.ts tree
  node -e "import('./build/index.js')" returns real functions for
    defineNodeExtension, defineExtension, onNodeMounted, onNodeRemoved
  synthetic downstream consumer importing NodeHandle/WidgetHandle
    types and runtime fns type-checks under tsc --noEmit
  pnpm lint && pnpm format:check && pnpm knip pass

Also adds packages/extension-api/vite.config.mts to the eslint
allowDefaultProject list so the typed lint rules can resolve it.

See decisions/D17-pkg2-build-strategy.md in the cross-repo workspace
for the full options analysis (A: types-only — rejected; B: vendor
sources — deferred to post-#11939; C: build from main app sources —
chosen).
2026-05-21 14:01:37 -07:00
GitHub Action
ca909b2832 [automated] Apply ESLint and Oxfmt fixes 2026-05-21 14:01:37 -07:00
Connor Byrne
5bf589f8d1 fix(ext-api): unblock CI auto-fix on docgen script
oxlint flags console.log in packages/extension-api/scripts/build-docs.ts
(intentional CLI progress output). The pre-commit lint-staged hook in
ci-lint-format then aborts before the [automated] format commit can be
pushed back, blocking the entire lint-and-format job.

- Add file-level eslint-disable for no-console (CLI build script)
- Whitelist build-docs.ts in eslint.config.ts allowDefaultProject so
  typed-lint does not error on the file outside the tsconfig project graph

Discovered while rebasing #12143 onto the foundation-v2 knip fix
(5b05f2b793).
2026-05-21 14:01:37 -07:00
Connor Byrne
6b6d4773d9 refactor(ext-api): collapse package barrel to canonical surface re-export (review #12143.M1+A9)
The package barrel at packages/extension-api/src/index.ts duplicated the
canonical surface in src/extension-api/index.ts. Two hand-maintained
exports lists drift out of sync — Architect #4's removal of
startExtensionSystem from the public surface, for example, only landed in
the canonical barrel.

Collapse the package barrel to a single 'export * from
@/extension-api/index' re-export so the canonical file is the one source of
truth. Future surface additions/removals flow through automatically; no
risk of asymmetric export sets between the in-tree consumer
(@/extension-api) and the npm package consumer
(@comfyorg/extension-api).
2026-05-21 14:01:37 -07:00
Connor Byrne
a86dc1cc2b feat(extension-api): npm package + TypeDoc docgen + CI workflows
Restratified i-pkg. Adds the @comfyorg/extension-api npm package
(packages/extension-api/) — package.json, tsconfig.{json,build,docs},
typedoc.json, scripts/build-docs.ts, README, .npmignore — plus three
CI workflows (extension-api-typecheck.yml, extension-api-publish.yml,
ci-tests-extension-api.yaml) and the docgen helper script.

Modifies foundation's src/extension-api/index.ts and
src/services/extension-api-service.ts with the package-aware tweaks
required for npm consumption.

Lockfile regenerated to include packages/extension-api workspace deps.

Original (pre-restratify) branch tip backed up at
refs/backup/restratify-20260511/ext-api-i-pkg.
2026-05-21 14:01:37 -07:00