superbee 0.4.3 → 0.4.4-pre.10
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/NOTICE +4 -0
- package/README.md +10 -1
- package/SKILL.md +10 -10
- package/dist/THIRD-PARTY-NOTICES.txt +2347 -0
- package/dist/portable-export.mjs +7 -3
- package/dist/publication/index.d.ts +3 -0
- package/dist/publication/site-manifest-core.d.ts +49 -0
- package/dist/publication/site-manifest-entry.d.ts +5 -0
- package/dist/publication/site-manifest.d.ts +5 -0
- package/dist/publication-bridge.mjs +45 -22
- package/dist/publication-site-manifest.mjs +212 -0
- package/dist/publication.mjs +249 -49
- package/dist/superbee.mjs +26705 -25397
- package/package.json +7 -4
- package/references/author-an-integration.md +87 -1
- package/references/hosted-checkout.md +45 -8
- package/references/modeling-and-delivery.md +6 -2
- package/references/recipes/review-workflow/references/view-authoring-v0.md +18 -0
- package/references/sample-bundle/references/okf-spec.md +8 -2
- package/references/views/references/view-authoring-v0.md +18 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "superbee",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4-pre.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Agent-facing Superbee CLI for reading and writing local OKF knowledge bundles: context notes, docs, cross-links, and live bundle Views.",
|
|
6
6
|
"keywords": [
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
"./portable-export": {
|
|
42
42
|
"types": "./dist/portable-export.d.ts",
|
|
43
43
|
"default": "./dist/portable-export.mjs"
|
|
44
|
+
},
|
|
45
|
+
"./publication/site-manifest": {
|
|
46
|
+
"types": "./dist/publication/site-manifest-entry.d.ts",
|
|
47
|
+
"default": "./dist/publication-site-manifest.mjs"
|
|
44
48
|
}
|
|
45
49
|
},
|
|
46
50
|
"files": [
|
|
@@ -63,10 +67,9 @@
|
|
|
63
67
|
"test": "node --test test/*.test.mjs",
|
|
64
68
|
"gen:skill": "node scripts/gen-skill.mjs",
|
|
65
69
|
"check:skill": "node scripts/gen-skill.mjs --check",
|
|
66
|
-
"prepublishOnly": "node -e \"console.error('superbee is released by .github/workflows/release.yml (
|
|
70
|
+
"prepublishOnly": "node -e \"console.error('superbee is released by .github/workflows/release.yml (OIDC trusted publishing); do not run npm publish here'); process.exit(1)\""
|
|
67
71
|
},
|
|
68
72
|
"devDependencies": {
|
|
69
|
-
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
70
73
|
"@superbee/board-git": "*",
|
|
71
74
|
"@superbee/bundle-descriptor": "*",
|
|
72
75
|
"@superbee/core": "*",
|
|
@@ -90,6 +93,6 @@
|
|
|
90
93
|
"darwin",
|
|
91
94
|
"linux"
|
|
92
95
|
],
|
|
93
|
-
"readme": "# superbee\n\nShared, versioned, conflict-safe knowledge for AI coding agents, stored as plain markdown in\nyour repo.\n\nSuperbee is pre-1.0. Commands and formats may change between releases.\n\n## What is Superbee?\n\nAgents forget everything between sessions, overwrite each other's work, and keep what they know\ninvisible to the humans they work for. Superbee fixes all three with a **knowledge bundle**: a\nfolder of markdown documents, by convention `.superbee/` at your project root, that agents read\nand write through a small command-line tool.\n\n- **Context that persists.** Agents write context notes, decisions, plans, and research into the\n bundle. The next session, or a different agent, picks up where the last one left off. An\n optional `SessionStart` hook for Claude Code, Codex, and OpenCode orients every new session\n automatically.\n- **Safe for many writers.** Each write can carry the actor that made it. A writer can name the\n version it last read; if anyone changed the document since, the write fails with a typed\n conflict error instead of silently overwriting their work.\n- **Visible to humans.** The bundle is plain markdown. Open it in any editor, render it on\n GitHub, diff it in git. `superbee ui` serves it locally as cross-linked pages with backlinks and\n a live activity feed. No bundle content leaves your machine until you run `superbee sync`, which\n shares the bundle with teammates through the board: a copy of the bundle kept on its own git\n branch, separate from your code.\n- **Views on demand.** Ask your agent for a dashboard, a timeline, a filtered task queue, or a\n reading view of one dense document. It builds a self-contained HTML page, stores it in the bundle\n as a View, and `superbee ui` hosts it in a sandboxed frame. A View reads the bundle live and can\n change it only through a write you confirm. Views are bundle content, so they travel with `sync`.\n- **Built for agents.** Output is structured and token-lean, and errors carry a small, stable set\n of exit codes. Agents act on responses without parsing prose or flooding their context window.\n- **Yours, and portable.** Bundles follow the Open Knowledge Format (OKF), a convention of\n markdown with frontmatter, so they outlive the tool: hand the folder to someone else, or read it\n with anything that speaks markdown. New bundles are written as OKF v0.2, and existing v0.1\n bundles keep working as they are. Reading and writing the bundle works offline; only sharing\n needs a network. The document schemas, called kinds, live inside the bundle, so it describes\n its own structure.\n\nBees build comb one cell at a time. The comb holds what the colony gathers, and its shape shows\nthe next bee where to build and what belongs where. Superbee works the same way: people and\nagents record what they learn in a structure that fits their domain, and that structure guides\nwhoever works next. Each session builds on the last instead of starting over.\n\nThe npm package is one self-contained executable with zero runtime dependencies, plus an Agent\nSkill, an instruction file your agent loads, that teaches it how to use the tool.\n\n## Install\n\nRequires a supported Node.js 22, 24, or 26 release (22.14.0 minimum) on macOS or Linux. Native Windows is not supported by this package.\n\n```sh\nnpm install -g superbee\n```\n\nStable releases publish on npm's `latest` tag and prereleases on `next
|
|
96
|
+
"readme": "# superbee\n\nShared, versioned, conflict-safe knowledge for AI coding agents, stored as plain markdown in\nyour repo.\n\nSuperbee is pre-1.0. Commands and formats may change between releases.\n\n## What is Superbee?\n\nAgents forget everything between sessions, overwrite each other's work, and keep what they know\ninvisible to the humans they work for. Superbee fixes all three with a **knowledge bundle**: a\nfolder of markdown documents, by convention `.superbee/` at your project root, that agents read\nand write through a small command-line tool.\n\n- **Context that persists.** Agents write context notes, decisions, plans, and research into the\n bundle. The next session, or a different agent, picks up where the last one left off. An\n optional `SessionStart` hook for Claude Code, Codex, and OpenCode orients every new session\n automatically.\n- **Safe for many writers.** Each write can carry the actor that made it. A writer can name the\n version it last read; if anyone changed the document since, the write fails with a typed\n conflict error instead of silently overwriting their work.\n- **Visible to humans.** The bundle is plain markdown. Open it in any editor, render it on\n GitHub, diff it in git. `superbee ui` serves it locally as cross-linked pages with backlinks and\n a live activity feed. No bundle content leaves your machine until you run `superbee sync`, which\n shares the bundle with teammates through the board: a copy of the bundle kept on its own git\n branch, separate from your code.\n- **Views on demand.** Ask your agent for a dashboard, a timeline, a filtered task queue, or a\n reading view of one dense document. It builds a self-contained HTML page, stores it in the bundle\n as a View, and `superbee ui` hosts it in a sandboxed frame. A View reads the bundle live and can\n change it only through a write you confirm. Views are bundle content, so they travel with `sync`.\n- **Built for agents.** Output is structured and token-lean, and errors carry a small, stable set\n of exit codes. Agents act on responses without parsing prose or flooding their context window.\n- **Yours, and portable.** Bundles follow the Open Knowledge Format (OKF), a convention of\n markdown with frontmatter, so they outlive the tool: hand the folder to someone else, or read it\n with anything that speaks markdown. New bundles are written as OKF v0.2, and existing v0.1\n bundles keep working as they are. Reading and writing the bundle works offline; only sharing\n needs a network. The document schemas, called kinds, live inside the bundle, so it describes\n its own structure.\n\nBees build comb one cell at a time. The comb holds what the colony gathers, and its shape shows\nthe next bee where to build and what belongs where. Superbee works the same way: people and\nagents record what they learn in a structure that fits their domain, and that structure guides\nwhoever works next. Each session builds on the last instead of starting over.\n\nThe npm package is one self-contained executable with zero runtime dependencies, plus an Agent\nSkill, an instruction file your agent loads, that teaches it how to use the tool.\n\n## Install\n\nRequires a supported Node.js 22, 24, or 26 release (22.14.0 minimum) on macOS or Linux. Native Windows is not supported by this package.\n\n```sh\nnpm install -g superbee\n```\n\nStable releases publish on npm's `latest` tag and prereleases on `next`. To try the prerelease:\n\n```sh\nnpm install -g superbee@next\n```\n\nWindows adapters and the `superbee-windows` executable live in a separate repository and are\nnot included in `superbee`. Most Windows users should run Superbee in WSL2, where npm sees a\nLinux platform and the normal installation applies. An experimental, unsupported native Windows\nbuild is available as open source, with build-from-source instructions: https://github.com/Holaxis-ai/superbee-windows-cli\n\n### Upgrading an existing Windows installation\n\nThe first release containing the Windows extraction removes native Windows support from this\npackage. Its npm `os` metadata permits only `darwin` and `linux`, so a Windows upgrade to an affected\nversion is rejected with `EBADPLATFORM`. This applies to existing prerelease users too. Forcing the\ninstallation does not restore support: the executable refuses commands on unsupported hosts\nbefore running them (the bare `--version` flag can still identify the installed build).\n\nThere is no supported Windows replacement on npm. The alternatives are WSL2 or the experimental\nbuild from source at https://github.com/Holaxis-ai/superbee-windows-cli; neither carries a\nfirst-party support promise for native Windows. An older installed version is not converted or\nremoved by this source change, and existing bundle files are not migrated by it. Review the affected release's notes before changing an existing\nWindows installation. macOS/Linux users can continue using the normal installation and setup flow.\n\nRun `superbee version --check` to compare your install with the current stable release.\n\n## First run: let your agent finish setup\n\n`npm install` gives you the CLI. The integrations (the Agent Skill, the `SessionStart` hook, and\nMCP server registration, where MCP is the Model Context Protocol) are installed by your agent,\nnot by hand. Ask it:\n\n> Run `superbee setup` and follow its instructions.\n\nSetup itself changes nothing. It inspects your configuration and returns one safe next command at\na time, and the agent runs each with your approval. Setup knows Claude Code, Codex, and OpenCode,\nplus Claude Desktop for the MCP registration only.\n\nFor a fresh cloud container, provision Superbee in the environment setup step before agent tool\nuse. Generated hooks bind absolute Node and CLI paths from their installation, so a project hook\ncopied from a laptop does not install Superbee or provide a working container launcher. Configure\nhooks inside the environment and verify startup in a fresh session. Startup pulls are best-effort;\ninspect an explicit `superbee sync` receipt to verify publication of edits.\n\n## Everyday use\n\nYou rarely type Superbee commands yourself. You ask your agent, and the Agent Skill translates the\nrequest into CLI calls:\n\n- \"Set up a Superbee bundle for this project and track our tasks in it.\"\n- \"Write up what we decided about the auth design as a doc, and link it to the task.\"\n- \"What did the last session leave off on? Check the context notes.\"\n- \"Sync the board so my teammate's agent sees this.\"\n- \"Give me a view of the open tasks grouped by owner.\"\n\nBehind those requests the agent uses a small set of commands: `init --dir .superbee` creates the\nbundle, `new` creates a document of a declared kind, `doc write` writes a free-form one,\n`doc update` changes a document, `link add` connects two, `list` and `doc read` query them, and\n`sync` shares the board. `superbee --help` lists the commands, and `superbee <command> --help`\ngives each one's full reference.\n\nThe two commands meant for you are the ones that show you the knowledge:\n\n```sh\nsuperbee ui --open # the whole bundle, rendered in your browser\nsuperbee doc open <id> # one document, by an id from `superbee list`\nsuperbee view open <id> # one exact local registered View, through a private one-use browser handoff\n```\n\nIn a hosted checkout, `superbee view read <id>` prints a View page's version on the host and\n`superbee view update <id> --expected-version <version>` replaces the page there (sync never sends\n`views/`). Uploading a page never approves its execution.\n\n## Upgrading from aslite\n\nIf you installed the earlier `@holaxis/aslite` package or its marketplace plugin: install\n`superbee` alongside it, have your agent run `superbee setup` to migrate the integrations, then\nrun `npm uninstall -g @holaxis/aslite`. Existing `.agentstate-lite/` bundles and\n`.agentstate.json` bindings keep working with no migration.\n\n## Learn more\n\nThe [repository](https://github.com/Holaxis-ai/superbee) holds the source, the\n[CLI contract](https://github.com/Holaxis-ai/superbee/blob/main/packages/superbee/AXI-CONTRACT.md),\nand the [wire protocol](https://github.com/Holaxis-ai/superbee/blob/main/docs/WIRE-PROTOCOL.md).\n\n## License\n\nApache-2.0 © 2026 Holaxis\n",
|
|
94
97
|
"readmeFilename": "README.md"
|
|
95
98
|
}
|
|
@@ -23,7 +23,7 @@ invent an official support commitment or managed admission.
|
|
|
23
23
|
|
|
24
24
|
Validation reads the selected recipe directory and inert accepted plugin metadata. It never imports a module named by the recipe,
|
|
25
25
|
discovers a bundle, writes a document or makes a provider request. Unknown profiles are explicit
|
|
26
|
-
`PROFILE_NOT_AVAILABLE` refusals, not successful compatibility claims. Core supplies `rest-json`; `github-issues` requires explicit registration of the independently installed GitHub plugin. Registered plugin spec checks are deferred to source test/bind/run; validation never imports its module.
|
|
26
|
+
`PROFILE_NOT_AVAILABLE` refusals, not successful compatibility claims. Core supplies `rest-json`; `github-issues` requires explicit registration of the independently installed GitHub plugin. Registered plugin spec checks are deferred to source test/bind/run (new bound-GET policies defer them to run); validation never imports its module.
|
|
27
27
|
An explicitly selected test double does not establish compatibility for an unavailable profile.
|
|
28
28
|
|
|
29
29
|
The complete package is checked for core's secret-shaped text, including README files; `.env` and
|
|
@@ -81,6 +81,15 @@ and findings for every run. A recipe's definitions-only directory and recorded f
|
|
|
81
81
|
separate. Expected values are compared exactly; missing expectation keys, changed receipts, unused
|
|
82
82
|
recorded exchanges, unscripted requests and failed core invariants fail the command.
|
|
83
83
|
|
|
84
|
+
For a source with an explicit `request.read_policy`, the fixture author may supply the optional
|
|
85
|
+
top-level `readPolicyApproval` object: `{"contract":1,"digest":"sha256:<reviewed policy digest>"}`.
|
|
86
|
+
Obtain that digest from Core's public `inspectSourceReadPolicy(connector, boundFeed)` for the exact
|
|
87
|
+
reviewed declaration and bound Feed, then record it explicitly. The CLI forwards this fixture data
|
|
88
|
+
to the public Core harness; it never calculates or grants approval automatically. Core refuses
|
|
89
|
+
missing, stale or nonmatching approval before provider requests. The object permits only `contract`
|
|
90
|
+
and `digest`; legacy fixtures without an explicit read policy need no approval. This assertion
|
|
91
|
+
applies only to recorded testing: it grants no live feed binding consent, credential or transport.
|
|
92
|
+
|
|
84
93
|
Each exchange records the method and URL expected by the public harness and a response (`status`,
|
|
85
94
|
optional headers and body), `{ "fail": true }`, or `{ "hang": true }`. Runs may specify `mode`, `at`,
|
|
86
95
|
`edits` and a bounded engine `budget`. Fixture records can include hostile URLs and other attack
|
|
@@ -119,6 +128,32 @@ The public [superbee-plugins repository](https://github.com/Holaxis-ai/superbee-
|
|
|
119
128
|
qualify mapping and observation behavior; live provider access and managed catalog admission remain
|
|
120
129
|
separate evidence.
|
|
121
130
|
|
|
131
|
+
## Register a trusted source implementation
|
|
132
|
+
|
|
133
|
+
Source registration accepts a reviewed built folder containing `package.json` with a
|
|
134
|
+
`superbeeIntegration` descriptor: contract 1, a slug `id`, exact compatible `core`, 1–32
|
|
135
|
+
`profiles` (`id`, positive `version`, relative `.mjs` `entry`) and a `recipes` mapping of
|
|
136
|
+
slug keys to inert Markdown recipe roots. Profile ids cannot shadow built-ins or another
|
|
137
|
+
accepted plugin. Each entry exports `createSourceProfile(helpers)` and returns its declared
|
|
138
|
+
extension profile, using the existing public Core helpers. Entries must be self-contained;
|
|
139
|
+
registration hashes finite UTF-8 bytes, not a dependency graph, publisher identity or sandbox.
|
|
140
|
+
Names and declared paths are bounded; traversal, links, overlapping roots and reserved object
|
|
141
|
+
keys are refused. No provider-specific CLI change is needed for another compatible source.
|
|
142
|
+
|
|
143
|
+
Register each source folder explicitly, review the proposal and accept its exact digest.
|
|
144
|
+
Resolve its recipes as `<plugin-id>:<recipe-key>`; `source plugin remove <plugin-id>`
|
|
145
|
+
deactivates its future selections. Registration does not grant credentials or alter Core's
|
|
146
|
+
provider host, method or resource policy. A new authenticated provider needs a reviewed Core
|
|
147
|
+
credential-host policy change; additional local GET endpoints require the explicit bound policy and
|
|
148
|
+
feed approval described below. Source and operation registrations are independent grants with separate bind/run
|
|
149
|
+
contracts; a package descriptor never automatically activates another capability.
|
|
150
|
+
|
|
151
|
+
Existing GitHub acceptance and feed consent remain valid for identical bytes. The first
|
|
152
|
+
successful registration/removal converts the old single-GitHub pointer to a source collection
|
|
153
|
+
at the same private state location. Listing and selection leave the active pointer unchanged. After that conversion, older
|
|
154
|
+
CLI list/select/remove paths refuse the new state; older registration writers are unsupported
|
|
155
|
+
and can replace that collection. Do not use old CLI binaries as writers after upgrading.
|
|
156
|
+
|
|
122
157
|
## Register the GitHub integration from a source checkout
|
|
123
158
|
|
|
124
159
|
The GitHub integration is distributed through the public Git repository; no integration npm
|
|
@@ -154,6 +189,57 @@ Rebinding changed consent resets observations and accepted tuples for reacquisit
|
|
|
154
189
|
availability with `superbee source plugin remove github`; already selected runs may finish their
|
|
155
190
|
selected generation. Existing bundle content and retained generations are preserved.
|
|
156
191
|
|
|
192
|
+
## Request a narrowly bound local GET policy
|
|
193
|
+
|
|
194
|
+
A source may opt into a reviewed local endpoint through its existing Connector `request` block:
|
|
195
|
+
|
|
196
|
+
```yaml
|
|
197
|
+
host: api.github.com
|
|
198
|
+
method: GET
|
|
199
|
+
path: '/repos/{owner}/{repo}/pulls'
|
|
200
|
+
items: ''
|
|
201
|
+
query: {state: all}
|
|
202
|
+
headers: {accept: application/vnd.github+json, x-github-api-version: '2026-03-10'}
|
|
203
|
+
paging: {kind: page-number, page_param: page, size_param: per_page, size: 30}
|
|
204
|
+
read_policy:
|
|
205
|
+
contract: 1
|
|
206
|
+
kind: bound-get
|
|
207
|
+
bindings: {owner: segment, repo: segment}
|
|
208
|
+
required_permissions: {pull_requests: read}
|
|
209
|
+
header_provider: github
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Its identity resource can be `https://github.com/{owner}/{repo}/pulls`. For detail, declare a separate
|
|
213
|
+
source with resource `https://github.com/{owner}/{repo}/pull/{number}`, path
|
|
214
|
+
`/repos/{owner}/{repo}/pulls/{number}`, `number: positive-integer`, no list query and paging none.
|
|
215
|
+
The integration owns object normalization. [GitHub's REST documentation](https://docs.github.com/en/rest/pulls/pulls)
|
|
216
|
+
provides the endpoint and Pull requests read minimum; opaque token grants remain provider-enforced.
|
|
217
|
+
|
|
218
|
+
Review the endpoint/query read semantics before accepting its binding: GET alone is not a safety
|
|
219
|
+
proof. Core admits only the exact declared host/path and resource parameters. Contract 1 supports
|
|
220
|
+
none/page-number paging with distinct page/size names outside query, required single page/size
|
|
221
|
+
values, exact query literals or whole bound values, and no body, GraphQL, watermark or cursor form.
|
|
222
|
+
Every declared header is required exactly once with its exact value on every hop. Case duplicates,
|
|
223
|
+
omitted/changed headers, query/paging collisions and undeclared authority refuse. Credential and
|
|
224
|
+
method-override headers remain forbidden. For anonymous version-header reads, use auth none,
|
|
225
|
+
explicit `domains: [api.github.com]`, and omit permission minima. Header-provider constraints grant
|
|
226
|
+
no credential host or environment lookup and preserve keyless robots checks.
|
|
227
|
+
|
|
228
|
+
New-policy binding preview/acceptance is inert, using accepted profile metadata. Execution compares
|
|
229
|
+
private consent before module import or credential lookup. Changing policy, binding, implementation
|
|
230
|
+
or resolved semantics requires reapproval and resets observation/accepted state. Installing a plugin
|
|
231
|
+
or recipe grants no network access. Managed execution still needs separately deployed operator
|
|
232
|
+
admission, and local code remains trusted code with ambient process authority.
|
|
233
|
+
|
|
234
|
+
Library hosts use inert `inspectSourceReadPolicy` from `@superbee/core/connectors` and pass its
|
|
235
|
+
approved `{contract: 1, digest}` as `observeSource.readPolicyApproval`. Missing/stale approval denies
|
|
236
|
+
before callbacks/replay. It is an explicit host assertion, not a review certificate. Public recorded
|
|
237
|
+
`SourceFixture` accepts the same explicit `readPolicyApproval`; it is never production consent.
|
|
238
|
+
CLI `source test` JSON remains unchanged and cannot approve these policies. Test them through the
|
|
239
|
+
supported public Core/harness API; do not import private CLI runner/transport seams. Native installed
|
|
240
|
+
registration/bind/refusal, installed public-Core observation, internal transport conformance and live
|
|
241
|
+
provider execution are distinct evidence.
|
|
242
|
+
|
|
157
243
|
## Bind and run a local Source Feed
|
|
158
244
|
|
|
159
245
|
After installing a recipe and creating its Source Feed in a local or Git bundle, preview consent:
|
|
@@ -80,17 +80,38 @@ Only run it when the person asks for the move.
|
|
|
80
80
|
|
|
81
81
|
## Sharing a hosted bundle, and retiring one
|
|
82
82
|
|
|
83
|
-
`superbee access list <bundle>` shows the person's own access and,
|
|
84
|
-
|
|
85
|
-
`
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
`superbee access list <bundle>` shows the person's own access and, when the host names it, the
|
|
84
|
+
workspace's web Access page (`access_page`). Sharing is managed there, not from the CLI: hosted
|
|
85
|
+
Superbee answers `access grant` and `access revoke --yes` with `admin_on_web` and changes nothing.
|
|
86
|
+
When the person asks you to share a bundle with someone, tell them a workspace admin gives that
|
|
87
|
+
member read or write on the Access page (`https://<workspace host>/settings/access`); the person
|
|
88
|
+
must already be a member of the workspace (invited from the Members page first). A bundle that
|
|
89
|
+
`superbee publish --to hosted` creates is readable only by its creator until then.
|
|
89
90
|
|
|
90
91
|
`superbee bundle retire <bundle>` is the person's step, never yours: it needs them to type the
|
|
91
92
|
bundle id in their own terminal. If it refuses with `needs_person_at_terminal`, show the person
|
|
92
93
|
the host's statement and give them the command; do not try to work around it.
|
|
93
94
|
|
|
95
|
+
## Registering a site's CI: `workload register`
|
|
96
|
+
|
|
97
|
+
A site whose content lives in hosted Superbee reads it in CI as a registered workload app. In the
|
|
98
|
+
site's repository, `superbee workload register` reads the repository and owner ids and the default
|
|
99
|
+
branch with the person's `gh` (`gh api repos/<owner>/<repo>`), and the workflow, workspace and
|
|
100
|
+
bundle from `release.config.json`. It opens the workspace's workload apps page with the form filled
|
|
101
|
+
in: both workflow refs `<owner>/<repo>/<workflow path>@refs/heads/<branch>`, events schedule,
|
|
102
|
+
repository_dispatch and workflow_dispatch, and the bundle at read. A site that publishes to hosted
|
|
103
|
+
(`reconcile.adapter: "hosted"`) also gets its `<bundle> site` line and the GitHub environment
|
|
104
|
+
`reconcile.environment` names (hosted refuses a site app without one). Otherwise the environment
|
|
105
|
+
stays empty, because the job that mints the token runs outside any GitHub environment; pass
|
|
106
|
+
`--environment <name>` only when that job declares one. `--no-open` prints the link instead, and
|
|
107
|
+
`--url` names the workspace's address when it can't be derived from `content.origin`.
|
|
108
|
+
|
|
109
|
+
Nothing is registered by the command. Registering is the person's step on the web: a workspace
|
|
110
|
+
administrator reviews every value on the page and clicks Register. Then the App id the page shows
|
|
111
|
+
goes in `release.config.json` as `reconcile.app` for a hosted site; a site that only reads hosted
|
|
112
|
+
content runs the printed `gh variable set HOSTED_APP_ID --repo <owner>/<repo> --body <app-id>`
|
|
113
|
+
instead. The values travel in the link's fragment, which the browser never sends to a server.
|
|
114
|
+
|
|
94
115
|
## Sign-in: relay the link, then retry
|
|
95
116
|
|
|
96
117
|
First run on a machine, in order:
|
|
@@ -307,6 +328,15 @@ with a `held` row, reason `unsafe_id`, and the rest of the bundle syncs. A host
|
|
|
307
328
|
differs only in letter case from another is held as `case_collision`. Both are renamed in the
|
|
308
329
|
Superbee app, by the person.
|
|
309
330
|
|
|
331
|
+
An edit that removes an outbound link the document had is held as `dropped_links`, and the row
|
|
332
|
+
names the links it removes. Usually the removal is a mistake (a rewrite from a partial read):
|
|
333
|
+
restore the links. When removing them is intended, `superbee sync --replace-links <id>` sends that
|
|
334
|
+
one document's edit as the file stands in that run, against the version it was checked against;
|
|
335
|
+
once admitted it is sent like any other change, retried by a later sync if the host was busy. It
|
|
336
|
+
covers no other document and no later edit, and it never admits a body carrying a
|
|
337
|
+
truncated-preview notice.
|
|
338
|
+
`superbee status` shows the same hold before you sync.
|
|
339
|
+
|
|
310
340
|
## The bundle's front page (the root `index.md`)
|
|
311
341
|
|
|
312
342
|
The root `index.md` syncs as one file of its own when the host lets you change the bundle's front
|
|
@@ -370,7 +400,10 @@ bundle for everyone.
|
|
|
370
400
|
the `superbee sync --accept-deletes blobs:<count>:<digest>` command it names.
|
|
371
401
|
- **Receipt:** `blobs.rows` has one row per request, keyed by file and request id: `committed`,
|
|
372
402
|
`conflict`, `refused`, `unknown` or `held`. `blobs.counts` totals them. An `unknown` row is
|
|
373
|
-
looked up by the same request on the next sync; it is never sent twice.
|
|
403
|
+
looked up by the same request on the next sync; it is never sent twice. A `refused` row whose
|
|
404
|
+
`result.error.code` is `path_collision` is a new file whose path, or one of its folders, differs
|
|
405
|
+
from an existing document or file only by letter case or Unicode form; nothing was written, and
|
|
406
|
+
sync exits 5. Rename the file or folder to a distinct path, then promote it again.
|
|
374
407
|
- **Conflicts:** after a `conflict` row (the host's version changed), the file is held until it is
|
|
375
408
|
resolved. `superbee sync --inspect --doc <key>` shows the recorded versions and MIME types.
|
|
376
409
|
`superbee sync --resolve keep --doc <key>` keeps your file: the next sync sends it as it is over
|
|
@@ -406,7 +439,11 @@ somewhere else. Taking a bundle out of hosted is `superbee export` (below), and
|
|
|
406
439
|
person asks for it.
|
|
407
440
|
|
|
408
441
|
`checkout` adds the folder to the workspace catalog, where `catalog list` shows it with
|
|
409
|
-
`home: hosted`.
|
|
442
|
+
`home: hosted`. `checkout --release` forgets the label checkout gave it; a label you chose is
|
|
443
|
+
kept. `superbee catalog remove <label>` forgets any other entry, such as one `catalog list`
|
|
444
|
+
reports `available: false` (its folder is gone); it never touches the folder or the checkout. It
|
|
445
|
+
refuses (`unsent_changes`, exit 5) a checkout whose folder holds changes sync has not sent: run
|
|
446
|
+
`superbee sync --dir <folder>` first. The local MCP app (`superbee mcp`) serves it through the folder, by that label or
|
|
410
447
|
with the session opened in it: a document written through a View lands in the folder and reaches
|
|
411
448
|
the host at the next `superbee sync`. A write sync could not send (a View save, a convention, a
|
|
412
449
|
retype, a document over the size limit, a change to `verified`) is refused before the file
|
|
@@ -47,13 +47,17 @@ instance together is appropriate.
|
|
|
47
47
|
5. Relate the new record to its actual evidence, policies, decisions, or dependencies.
|
|
48
48
|
6. Run `superbee status`, read the new record, and inspect its links. Repair only defects caused by
|
|
49
49
|
this change.
|
|
50
|
-
7. Remove temporary authoring or staging directories,
|
|
51
|
-
|
|
50
|
+
7. Remove temporary authoring or staging directories, summarize the value, and identify the
|
|
51
|
+
authoritative result by title and document reference. Follow the eager Skill's "Make the value
|
|
52
|
+
visible" guidance for explicit display requests.
|
|
52
53
|
|
|
53
54
|
Use `--body-file` for multiline Markdown. Use `superbee new "<Kind>" --help` for the exact fields
|
|
54
55
|
of an installed Kind. Prefer semantic no-ops, actor attribution, and version-aware updates when the
|
|
55
56
|
CLI exposes them.
|
|
56
57
|
|
|
58
|
+
Put write-time guidance in a Kind's field or value descriptions, never its body: a write that
|
|
59
|
+
sets a described value returns that description as `guidance`.
|
|
60
|
+
|
|
57
61
|
## Evolve from use
|
|
58
62
|
|
|
59
63
|
Refine fields or relationships only after actual instances expose a recurring need. Package a
|
|
@@ -34,6 +34,24 @@ only a View whose source or author you trust. A View that declares `bundle-propo
|
|
|
34
34
|
trusted shell to prepare one v1 scalar-field action; only the human's shell-native Apply choice
|
|
35
35
|
authorizes the write.
|
|
36
36
|
|
|
37
|
+
## Opening a local View
|
|
38
|
+
|
|
39
|
+
Use `superbee view open <viewId>` for an exact registered View in the selected local bundle;
|
|
40
|
+
`--dir` and the resolved `--actor` select its managed UI authority. Use `show_view` in a supported
|
|
41
|
+
MCP Apps host. These entry points establish their own host context; do not fabricate a bare View
|
|
42
|
+
URL or copy a reusable session token into a link.
|
|
43
|
+
|
|
44
|
+
For a fresh embedded browser, `superbee view open <viewId> --no-open --json` prepares a private
|
|
45
|
+
`browser_launch.url`. Navigate the selected browser to that exact returned URL. The handoff is
|
|
46
|
+
one-use and expires after 60 seconds: never share or log it. Its ordinary `url` field is a
|
|
47
|
+
credential-free destination, useful only in a browser that already has the right local session.
|
|
48
|
+
After expiry or ambiguous redemption, request a fresh handoff instead of replaying the old one.
|
|
49
|
+
|
|
50
|
+
The handoff establishes the existing session for the entire selected local UI authority, not
|
|
51
|
+
only this View. It does not approve execution, change the actor or bypass the normal approval of
|
|
52
|
+
exact View bytes and access. `handoff_prepared` and `open_requested` do not prove rendering; verify
|
|
53
|
+
the result in the receiving browser. Run `superbee view open --help` for current options.
|
|
54
|
+
|
|
37
55
|
## The requests
|
|
38
56
|
|
|
39
57
|
Every request carries `bridge: "v0"` (or `"v1"` for `read-versioned` and `action.propose`), an
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
type: Reference
|
|
3
3
|
title: Open Knowledge Format v0.1 (Draft)
|
|
4
4
|
description: A version-scoped OKF v0.1 interop reference, not Superbee's cross-edition authority.
|
|
5
|
-
resource: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/
|
|
5
|
+
resource: https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/ee67a5ca27044ebe7c38385f5b6cffc2305a9c1a/okf/SPEC.md
|
|
6
6
|
tags: [okf, spec, reference]
|
|
7
7
|
timestamp: 2026-08-23T17:47:52Z
|
|
8
8
|
---
|
|
@@ -17,6 +17,11 @@ file is a Concept whose ID is its path minus `.md`. The only required
|
|
|
17
17
|
frontmatter field is `type`. This document mirrors the external spec as a
|
|
18
18
|
first-class concept (§8) so citations resolve inside the graph.
|
|
19
19
|
|
|
20
|
+
OKF has since moved to its own repository,
|
|
21
|
+
`GoogleCloudPlatform/open-knowledge-format`, which publishes v0.2. The
|
|
22
|
+
`knowledge-catalog` copy is a frozen snapshot, so the v0.1 citation below is a
|
|
23
|
+
permalink to the commit that published v0.1.
|
|
24
|
+
|
|
20
25
|
# Key sections
|
|
21
26
|
|
|
22
27
|
* §3 bundle structure and reserved filenames (`index.md`, `log.md`).
|
|
@@ -26,4 +31,5 @@ first-class concept (§8) so citations resolve inside the graph.
|
|
|
26
31
|
|
|
27
32
|
# Citations
|
|
28
33
|
|
|
29
|
-
1. [OKF SPEC.md](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/
|
|
34
|
+
1. [OKF v0.1 SPEC.md](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/ee67a5ca27044ebe7c38385f5b6cffc2305a9c1a/okf/SPEC.md)
|
|
35
|
+
2. [Open Knowledge Format repository](https://github.com/GoogleCloudPlatform/open-knowledge-format)
|
|
@@ -34,6 +34,24 @@ only a View whose source or author you trust. A View that declares `bundle-propo
|
|
|
34
34
|
trusted shell to prepare one v1 scalar-field action; only the human's shell-native Apply choice
|
|
35
35
|
authorizes the write.
|
|
36
36
|
|
|
37
|
+
## Opening a local View
|
|
38
|
+
|
|
39
|
+
Use `superbee view open <viewId>` for an exact registered View in the selected local bundle;
|
|
40
|
+
`--dir` and the resolved `--actor` select its managed UI authority. Use `show_view` in a supported
|
|
41
|
+
MCP Apps host. These entry points establish their own host context; do not fabricate a bare View
|
|
42
|
+
URL or copy a reusable session token into a link.
|
|
43
|
+
|
|
44
|
+
For a fresh embedded browser, `superbee view open <viewId> --no-open --json` prepares a private
|
|
45
|
+
`browser_launch.url`. Navigate the selected browser to that exact returned URL. The handoff is
|
|
46
|
+
one-use and expires after 60 seconds: never share or log it. Its ordinary `url` field is a
|
|
47
|
+
credential-free destination, useful only in a browser that already has the right local session.
|
|
48
|
+
After expiry or ambiguous redemption, request a fresh handoff instead of replaying the old one.
|
|
49
|
+
|
|
50
|
+
The handoff establishes the existing session for the entire selected local UI authority, not
|
|
51
|
+
only this View. It does not approve execution, change the actor or bypass the normal approval of
|
|
52
|
+
exact View bytes and access. `handoff_prepared` and `open_requested` do not prove rendering; verify
|
|
53
|
+
the result in the receiving browser. Run `superbee view open --help` for current options.
|
|
54
|
+
|
|
37
55
|
## The requests
|
|
38
56
|
|
|
39
57
|
Every request carries `bridge: "v0"` (or `"v1"` for `read-versioned` and `action.propose`), an
|