@kvman/testkit 0.1.2 → 0.1.3
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/dist/docs/built-in-guides.d.ts +1 -1
- package/dist/docs/built-in-guides.d.ts.map +1 -1
- package/dist/docs/built-in-guides.js +2 -2
- package/dist/docs/built-in-guides.js.map +1 -1
- package/dist/docs/docs-bin.js +1 -1
- package/dist/docs/docs-bin.js.map +1 -1
- package/dist/new/scaffold-files.d.ts.map +1 -1
- package/dist/new/scaffold-files.js +1 -0
- package/dist/new/scaffold-files.js.map +1 -1
- package/dist/new/scaffold-versions.d.ts +2 -2
- package/dist/new/scaffold-versions.js +2 -2
- package/docs/conventions.md +79 -0
- package/package.json +3 -3
- package/templates/AGENTS.md.template +1 -1
- package/templates/README.md.template +1 -1
|
@@ -5,7 +5,7 @@ export type BuiltInGuide = {
|
|
|
5
5
|
title: string;
|
|
6
6
|
markdown: string;
|
|
7
7
|
};
|
|
8
|
-
/** The
|
|
8
|
+
/** The four built-in guides, sorted by topic. */
|
|
9
9
|
export declare function listBuiltInGuides(): BuiltInGuide[];
|
|
10
10
|
/** The built-in guide on a topic, or `undefined` for any other topic. */
|
|
11
11
|
export declare function readBuiltInGuide(topic: string): BuiltInGuide | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in-guides.d.ts","sourceRoot":"","sources":["../../src/docs/built-in-guides.ts"],"names":[],"mappings":"AAKA,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAclG,
|
|
1
|
+
{"version":3,"file":"built-in-guides.d.ts","sourceRoot":"","sources":["../../src/docs/built-in-guides.ts"],"names":[],"mappings":"AAKA,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAclG,iDAAiD;AACjD,wBAAgB,iBAAiB,IAAI,YAAY,EAAE,CAElD;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGxE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
|
-
const builtInTopics = ['i18n', 'presets', 'sdk'];
|
|
2
|
+
const builtInTopics = ['conventions', 'i18n', 'presets', 'sdk'];
|
|
3
3
|
function titleOf(topic, markdown) {
|
|
4
4
|
const first = markdown.split('\n', 1)[0];
|
|
5
5
|
return first !== undefined && first.startsWith('# ') ? first.slice(2) : topic;
|
|
@@ -8,7 +8,7 @@ function readGuide(topic) {
|
|
|
8
8
|
const markdown = readFileSync(new URL(`../../docs/${topic}.md`, import.meta.url), 'utf8');
|
|
9
9
|
return { extension: 'kvman', topic, title: titleOf(topic, markdown), markdown };
|
|
10
10
|
}
|
|
11
|
-
/** The
|
|
11
|
+
/** The four built-in guides, sorted by topic. */
|
|
12
12
|
export function listBuiltInGuides() {
|
|
13
13
|
return builtInTopics.map((topic) => readGuide(topic));
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in-guides.js","sourceRoot":"","sources":["../../src/docs/built-in-guides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"built-in-guides.js","sourceRoot":"","sources":["../../src/docs/built-in-guides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;AAEzE,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChF,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,cAAc,KAAK,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1F,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;AAClF,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAI,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC"}
|
package/dist/docs/docs-bin.js
CHANGED
|
@@ -5,7 +5,7 @@ import { listDocsPages } from "./docs-list.js";
|
|
|
5
5
|
import { readDocsPage } from "./docs-get.js";
|
|
6
6
|
import { findRunningKvman } from "../running/running-kvman.js";
|
|
7
7
|
// The `kvman-docs` bin (plan 09 §9.5, plan 10, ADR 0010, 17): reads the docs of the extensions a running kvman has
|
|
8
|
-
// loaded over HTTP, plus the
|
|
8
|
+
// loaded over HTTP, plus the four built-in guides with no kvman running. With `--json` it prints the data as one
|
|
9
9
|
// JSON line.
|
|
10
10
|
const usage = 'Usage: kvman-docs list [--json] [--home <dir>] [--url <url>]\nUsage: kvman-docs get <extension> <topic> [--json] [--home <dir>] [--url <url>]';
|
|
11
11
|
function parseOptions(argv) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-bin.js","sourceRoot":"","sources":["../../src/docs/docs-bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,mHAAmH;AACnH,
|
|
1
|
+
{"version":3,"file":"docs-bin.js","sourceRoot":"","sources":["../../src/docs/docs-bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-files.d.ts","sourceRoot":"","sources":["../../src/new/scaffold-files.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAiF9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"scaffold-files.d.ts","sourceRoot":"","sources":["../../src/new/scaffold-files.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAiF9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyB1E"}
|
|
@@ -86,6 +86,7 @@ export function scaffoldFiles(input) {
|
|
|
86
86
|
'README.md': template('README.md', input, { __WEB_README__: input.web ? webReadme : '' }),
|
|
87
87
|
'AGENTS.md': template('AGENTS.md', input, { __WEB_AGENTS__: input.web ? webAgents : '' }),
|
|
88
88
|
'CLAUDE.md': '@AGENTS.md\n',
|
|
89
|
+
'docs/conventions.md': guide('conventions.md'),
|
|
89
90
|
'docs/sdk.md': guide('sdk.md'),
|
|
90
91
|
'docs/i18n.md': guide('i18n.md'),
|
|
91
92
|
'docs/presets.md': guide('presets.md'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-files.js","sourceRoot":"","sources":["../../src/new/scaffold-files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold-files.js","sourceRoot":"","sources":["../../src/new/scaffold-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// The versions a scaffold pins (plan 09 §9.2, ADR 0009, 126–127): those the running kvman bundles. A test checks them
|
|
2
2
|
// against the monorepo, so a version bump there fails until this follows.
|
|
3
3
|
export const scaffoldVersions = {
|
|
4
|
-
sdk: '0.1.
|
|
5
|
-
testkit: '0.1.
|
|
4
|
+
sdk: '0.1.1',
|
|
5
|
+
testkit: '0.1.3',
|
|
6
6
|
typescript: '6.0.3',
|
|
7
7
|
typesNode: '24.19.0',
|
|
8
8
|
vite: '8.3.1',
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Conventions
|
|
2
|
+
|
|
3
|
+
The rules every kvman extension follows. `sdk`, `i18n`, and `presets` explain the API behind them.
|
|
4
|
+
|
|
5
|
+
## Names
|
|
6
|
+
|
|
7
|
+
- A command or query is `<namespace>.<segment>…`: lowercase, kebab-case segments, written in full everywhere: `ctx.exec('notes.note.add', …)`.
|
|
8
|
+
- A command ends in an imperative verb (`add`, `set`, `run`, `delete`); a query ends in a read verb (`get`, `list`, `search`, `count`). A query never writes.
|
|
9
|
+
- Everything an extension registers starts with its own namespace.
|
|
10
|
+
|
|
11
|
+
## Public and private
|
|
12
|
+
|
|
13
|
+
- A registration is private unless `public: true`. Only public ones are callable from outside the extension: the HTTP API, other extensions, the agent.
|
|
14
|
+
- Every field of a public input has a description: `.describe('The note.')`.
|
|
15
|
+
|
|
16
|
+
## Errors
|
|
17
|
+
|
|
18
|
+
- Throw `ctx.problem('<namespace>/UPPER_SNAKE', params)`. The kernel's own codes are plain `UPPER_SNAKE` (`VALIDATION_FAILED`, `NOT_FOUND`, …).
|
|
19
|
+
- Never throw a string, swallow an error, or return `null` to mean "failed".
|
|
20
|
+
- Each code has an `en` and an `ar` text (`<namespace>.errors.<CODE>`, see `i18n`).
|
|
21
|
+
|
|
22
|
+
## Jobs
|
|
23
|
+
|
|
24
|
+
- Everything runs as a job. `ctx.exec` runs one now and returns its output; `ctx.execAsync` and `ctx.schedule` queue work that survives a restart and retries.
|
|
25
|
+
- A handler's work ends when it returns: no `setTimeout`, `setInterval`, or unawaited promise that outlives it.
|
|
26
|
+
- Long work is `execAsync` or `ctx.schedule`; a long-lived child process is `ctx.processes`.
|
|
27
|
+
|
|
28
|
+
## No events
|
|
29
|
+
|
|
30
|
+
- There are no events or listeners. An owner offers fixed points, and others register handlers for them.
|
|
31
|
+
- The kernel's job and lifecycle points take `ctx.registerHandler` (for example `kernel.started`; the list is in `sdk`).
|
|
32
|
+
- An extension may offer its own registries, such as kvcoder's connectors, sections, and slash commands.
|
|
33
|
+
|
|
34
|
+
## Storage
|
|
35
|
+
|
|
36
|
+
- `ctx.store` holds kv and JSON collections, per workspace plus `global`.
|
|
37
|
+
- Each call commits alone; `transaction((tx) => …)` is synchronous.
|
|
38
|
+
- Validate what is read back with a zod schema.
|
|
39
|
+
|
|
40
|
+
## Settings
|
|
41
|
+
|
|
42
|
+
- Register each with a zod schema and a description.
|
|
43
|
+
- `scopes` is `['global', 'workspace']` (the default), `['global']`, or `[]` for a key only the preset sets.
|
|
44
|
+
- A value resolves workspace, then global, then preset, then default. A key with no default must be set by the preset (see `presets`).
|
|
45
|
+
|
|
46
|
+
## Secrets
|
|
47
|
+
|
|
48
|
+
- Only through `ctx.secrets`. Never log a secret, store it elsewhere, or return it from a command or query.
|
|
49
|
+
|
|
50
|
+
## Validation
|
|
51
|
+
|
|
52
|
+
- Every boundary has a zod schema: inputs, outputs, settings, and persisted JSON.
|
|
53
|
+
- Use the `z` from `@kvman/sdk`.
|
|
54
|
+
|
|
55
|
+
## Text for people
|
|
56
|
+
|
|
57
|
+
- Text a person sees is always a translation key with `en` and `ar` entries in `locales/` (see `i18n`).
|
|
58
|
+
- Text for a model (descriptions of commands and queries, docs pages) is English.
|
|
59
|
+
- Styles use logical CSS only, so right-to-left pages mirror.
|
|
60
|
+
|
|
61
|
+
## UI
|
|
62
|
+
|
|
63
|
+
- The kernel and kvwebui hold no product concept.
|
|
64
|
+
- An extension owns its UI and offers it through the public query `<namespace>.ui.get` (pages, nav items, panels, status items, and their views, which may use its own components).
|
|
65
|
+
- The preset places it: `kvwebui.home`, `kvwebui.title`.
|
|
66
|
+
|
|
67
|
+
## Documenting an extension
|
|
68
|
+
|
|
69
|
+
- The public queries `<namespace>.docs.list` and `<namespace>.docs.get` serve its Markdown pages to agents.
|
|
70
|
+
|
|
71
|
+
## Dependencies between extensions
|
|
72
|
+
|
|
73
|
+
- Declare them in `kvman.dependencies`.
|
|
74
|
+
- Import another extension only as a type (`import type`), or a subpath it exports. Never import the kernel.
|
|
75
|
+
|
|
76
|
+
## Checks
|
|
77
|
+
|
|
78
|
+
- Run `npm run check` and `npm test` after every change.
|
|
79
|
+
- Tests are deterministic and use `createTestKernel` from `@kvman/testkit` (see `sdk`).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kvman/testkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "createTestKernel: the real kvman kernel for extension tests.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"templates"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@kvman/kernel": "0.
|
|
43
|
-
"@kvman/sdk": "0.1.
|
|
42
|
+
"@kvman/kernel": "0.3.0",
|
|
43
|
+
"@kvman/sdk": "0.1.1"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "tsc -p tsconfig.build.json",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This folder is the kvman extension `__NAME__` (namespace `__NAMESPACE__`).
|
|
4
4
|
|
|
5
|
-
- Read `docs/` first: the platform guides `sdk.md`, `i18n.md`, and `presets.md`.
|
|
5
|
+
- Read `docs/` first: the platform guides `conventions.md`, `sdk.md`, `i18n.md`, and `presets.md`.
|
|
6
6
|
- For the docs of the extensions this one builds on, run `kvman-docs list` and `kvman-docs get <extension> <topic>`; they need a running kvman.
|
|
7
7
|
- Keep this extension's own docs in `extension-docs/`; they are served by `__NAMESPACE__.docs.list` and `__NAMESPACE__.docs.get`.
|
|
8
8
|
- After every change, run `npm run check` and `npm test`.
|
|
@@ -5,7 +5,7 @@ A kvman extension, namespace `__NAMESPACE__`.
|
|
|
5
5
|
- `src/index.ts` registers its commands, queries, and settings. A kvman that loads this folder as `path:` (a preset entry `"__NAME__": "path:<folder>"`) reloads it on every save, with no build.
|
|
6
6
|
- `locales/en.json` and `locales/ar.json` hold its texts.
|
|
7
7
|
- `extension-docs/usage.md` documents the extension for other builders, served by `__NAMESPACE__.docs.list` and `__NAMESPACE__.docs.get`.
|
|
8
|
-
- `AGENTS.md` guides an agent working here; `docs/` holds the platform guides (`sdk`, `i18n`, `presets`).
|
|
8
|
+
- `AGENTS.md` guides an agent working here; `docs/` holds the platform guides (`conventions`, `sdk`, `i18n`, `presets`).
|
|
9
9
|
- `npm test` runs `test/` against a real kernel (`@kvman/testkit`).
|
|
10
10
|
- `npm run check` loads it in a test kernel and reports what kvman would refuse or show untranslated.
|
|
11
11
|
- `npm run build` compiles `dist/`, for publishing.
|