Commit graph

8 commits

Author SHA1 Message Date
Vincent Koc
633b84f222
docs(plugins): mark generated reference pages and fix their shared template (#140254)
* docs(plugins): mark generated reference pages and fix their shared template

Two generator files change; the other 153 files are their regenerated
output from `pnpm plugins:inventory:gen`.

- Emit a "generated, do not edit" banner naming the regeneration command
  and the manual-block markers. None of the 151 reference pages said they
  were generated, so a contributor edit was silently overwritten.
- Give generated reference titles a `reference` suffix. Eight of them
  collided with a hand-written guide title (beam, geolocation,
  google-meet, logbook, teams-meetings, webhooks, workboard,
  zoom-meetings). Duplicate frontmatter titles across docs/ now total 0.
- Render the surface list as a list instead of a semicolon-joined
  sentence, and use plain conjunctions for install routes. Strict STE
  hard violations across docs/plugins/reference/ drop from 178 to 20.
- Drop the body H1, which duplicated the frontmatter title Mintlify
  already renders.
- Fix a generator bug found while testing: the marker-less fallback in
  `extractManualReferenceSections` matched only the first line under
  `## Surface`, so a second `--write` run captured later bullets into a
  fabricated manual block. `--write` is now idempotent and `--check`
  passes across repeated runs.

All 12 hand-written manual blocks are preserved.

* test(scripts): follow resolvePluginSurface to its list contract

resolvePluginSurface now returns one string per surface item instead of
a semicolon-joined sentence, so the generator can render a list. The
four assertions move from toBe(<joined string>) to toEqual(<array>) and
pick up the capitalised labels.

The "generic fallback" case changes meaning rather than disappearing.
The empty manifest now yields [], and renderSurface() prints "This
plugin declares no channels, providers, commands, or contracts." for an
empty list, which tells a reader more than the old "plugin". The test
is renamed to say what it now checks, with a comment pointing at the
new home of the fallback.

No generated page has an empty Surface section, so no page changes
because of this.
2026-09-07 03:14:31 +08:00
Vincent Koc
e73250f54b
feat(plugins): externalize OpenCode provider (#117035)
* feat(plugins): externalize OpenCode provider

* docs: refresh OpenCode provider map
2026-08-01 05:07:35 +08:00
Peter Steinberger
9dfb2a1318
fix: show native history in adopted Pi and OpenCode sessions (#114040)
* fix(plugins): import adopted catalog history into the OpenClaw transcript

Import native Pi and OpenCode history when a catalog session is adopted so the OpenClaw transcript reflects the full conversation immediately.

Mark imported user rows with mirrorOrigin because they are transcript mirrors, not new external turns. This preserves watcher deduplication and prevents adopted history from being reported as fresh upstream input.

* refactor(plugins): split catalog history importer

Keep the session catalog contract module leaf-like by moving transcript mutation into a dedicated runtime module. This breaks the registry-to-transcript import cycle while preserving the Plugin SDK entrypoint and importer behavior.
2026-07-26 02:09:48 -04:00
Peter Steinberger
e19841c725
feat: continue Pi and OpenCode sessions from the session catalog (#113718)
* feat(plugins): add acpSessionBinding seam for ACP session adoption

* feat(acpx,opencode): adopt existing Pi and OpenCode sessions from the catalog

* fix(ci): satisfy dead-code and temp-path guards

* docs(acpx): record why pi-acp session-root resolution stays strict
2026-07-25 08:35:47 -07:00
Peter Steinberger
ce078367e4
fix(docs): preserve plugin surface identifiers 2026-07-14 23:41:24 -04:00
Peter Steinberger
9d3de463a5
fix(docs-i18n): preserve Max translation boundaries 2026-07-14 16:43:15 -04:00
Peter Steinberger
05fb55eb7b
feat: discover OpenCode and Pi sessions on paired nodes (#106941)
* feat(sessions): add opencode and pi catalogs

* fix(sessions): satisfy catalog lint

* fix(sessions): validate pi storage paths

* fix(sessions): index growing pi transcripts

* refactor(sessions): split pi path resolution

* docs(sessions): refresh catalog map

* refactor(sessions): privatize pi catalog internals

* fix(sessions): validate node catalog payloads

* fix(sessions): harden external catalog discovery

* fix(sessions): normalize catalog transcript data

* refactor(gateway): keep node scope gate compact

* fix(opencode): reject option-like session ids

* fix(sessions): align external id validation
2026-07-13 21:45:53 -07:00
Peter Steinberger
2244ba87b3
docs: add generated plugin reference pages 2026-05-02 15:55:47 +01:00