@ikenga/contract 0.14.1 → 0.16.0
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/README.md +8 -8
- package/dist/action-frontmatter.js +1 -1
- package/dist/action-frontmatter.js.map +1 -1
- package/dist/app-bridge.d.ts +126 -0
- package/dist/app-bridge.d.ts.map +1 -0
- package/dist/app-bridge.js +141 -0
- package/dist/app-bridge.js.map +1 -0
- package/dist/artifact.d.ts +10 -10
- package/dist/engine/adapter.d.ts +1 -1
- package/dist/engine/adapter.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +232 -41
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +28 -5
- package/dist/manifest.js.map +1 -1
- package/dist/registry.d.ts +206 -34
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/window.js +1 -1
- package/dist/window.js.map +1 -1
- package/package.json +6 -2
- package/src/action-frontmatter.ts +1 -1
- package/src/app-bridge.ts +158 -0
- package/src/engine/adapter.ts +1 -1
- package/src/index.ts +1 -0
- package/src/manifest.test.ts +50 -2
- package/src/manifest.ts +33 -5
- package/src/registry.ts +1 -1
- package/src/window.ts +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# @ikenga/contract
|
|
2
2
|
|
|
3
|
-
[](https://github.com/
|
|
4
|
-
[](https://github.com/
|
|
3
|
+
[](https://github.com/ikenga-hq/ikenga-contract/actions)
|
|
4
|
+
[](https://github.com/ikenga-hq/ikenga-contract/releases)
|
|
5
5
|
[](LICENSE)
|
|
6
|
-
[](https://github.com/
|
|
6
|
+
[](https://github.com/ikenga-hq/ikenga-contract/discussions)
|
|
7
7
|
|
|
8
8
|
> The single source of truth for how the Ikenga shell, pkgs, and engines talk to each
|
|
9
9
|
> other.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
## What it is
|
|
12
12
|
|
|
13
13
|
`@ikenga/contract` is the shared TypeScript package that defines the wire between the
|
|
14
|
-
[Ikenga shell](https://github.com/
|
|
14
|
+
[Ikenga shell](https://github.com/ikenga-hq/ikenga), its packages, and its engine
|
|
15
15
|
adapters: the manifest schema, the RPC envelope, the Engine interface, and the capability
|
|
16
16
|
scope catalogue. It's intentionally small and stable — bumping its major version is an
|
|
17
17
|
event coordinated across the shell and every published pkg.
|
|
@@ -55,7 +55,7 @@ install time.
|
|
|
55
55
|
## Source of truth
|
|
56
56
|
|
|
57
57
|
The `Manifest` schema **mirrors** the Rust struct in
|
|
58
|
-
[`
|
|
58
|
+
[`ikenga-hq/ikenga`](https://github.com/ikenga-hq/ikenga) at
|
|
59
59
|
`src-tauri/src/pkg/manifest.rs`. The Rust kernel parses pkg `manifest.json` files; this
|
|
60
60
|
package is a TS-side validator and types-only mirror for tooling (CLI, registry build). To
|
|
61
61
|
change the manifest, change the Rust struct first and update this schema in lockstep.
|
|
@@ -69,8 +69,8 @@ but unused by the kernel today; treat them as forward-looking.
|
|
|
69
69
|
## Links
|
|
70
70
|
|
|
71
71
|
- [ikenga.dev](https://ikenga.dev) — site + docs
|
|
72
|
-
- [`ikenga`](https://github.com/
|
|
73
|
-
- [`ikenga-pkgs`](https://github.com/
|
|
72
|
+
- [`ikenga`](https://github.com/ikenga-hq/ikenga) — the desktop shell (owns the Rust source of truth)
|
|
73
|
+
- [`ikenga-pkgs`](https://github.com/ikenga-hq/ikenga-pkgs) — first-party packages
|
|
74
74
|
|
|
75
75
|
## License
|
|
76
76
|
|
|
@@ -79,5 +79,5 @@ Apache-2.0 — see [`LICENSE`](LICENSE).
|
|
|
79
79
|
## Contributing & community
|
|
80
80
|
|
|
81
81
|
Issues and PRs welcome. Start a thread in
|
|
82
|
-
[Discussions](https://github.com/
|
|
82
|
+
[Discussions](https://github.com/ikenga-hq/ikenga-contract/discussions).
|
|
83
83
|
<!-- VERIFY: link CONTRIBUTING.md / CODE_OF_CONDUCT.md once the org .github defaults or per-repo copies exist. -->
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Atelier skill *action*'s YAML frontmatter (the block between the leading
|
|
3
3
|
// `---` fences of an `actions/*.md` file).
|
|
4
4
|
//
|
|
5
|
-
// The Rust loader in `
|
|
5
|
+
// The Rust loader in `ikenga-hq/ikenga` at
|
|
6
6
|
// `src-tauri/src/pkg/skill_actions.rs` mirrors this schema. Field changes MUST
|
|
7
7
|
// be made in lockstep with that Rust struct — same convention as
|
|
8
8
|
// manifest.ts ↔ manifest.rs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-frontmatter.js","sourceRoot":"","sources":["../src/action-frontmatter.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,2CAA2C;AAC3C,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"action-frontmatter.js","sourceRoot":"","sources":["../src/action-frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** The `method` discriminant carried inside the logging frame's `data`. */
|
|
3
|
+
export declare const REPO_CHANGED_METHOD: "repo.changed";
|
|
4
|
+
/**
|
|
5
|
+
* Per-pkg relay budget enforced by the Rust supervisor's MCP read loop.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors `MCP_NOTIFICATION_MAX_PER_SEC` in
|
|
8
|
+
* `shell/src-tauri/src/pkg/lifecycle.rs:166` — this is a re-declaration for
|
|
9
|
+
* pkg authors, NOT a second enforcement point. The shell drops (never queues)
|
|
10
|
+
* frames past the cap, so an over-cap burst loses the middle of the run, not
|
|
11
|
+
* the tail.
|
|
12
|
+
*
|
|
13
|
+
* The window is **TUMBLING, not rolling**: the loop resets `window_start` to
|
|
14
|
+
* `now` and zeroes the counter the first time a frame arrives ≥1s after the
|
|
15
|
+
* window opened (`lifecycle.rs:~1427-1439`). A burst can therefore straddle
|
|
16
|
+
* two windows and land up to 2× this many frames inside one arbitrary
|
|
17
|
+
* one-second span — that is expected, not a leak.
|
|
18
|
+
*
|
|
19
|
+
* Practical consequence for a watcher: coalesce ruthlessly before sending.
|
|
20
|
+
* `repo.changed` carries `coalesced` precisely so one frame can stand for many
|
|
21
|
+
* filesystem events.
|
|
22
|
+
*/
|
|
23
|
+
export declare const HOST_NOTIFICATION_MAX_PER_SEC = 20;
|
|
24
|
+
/** Zod schema for the `repo.changed` payload. */
|
|
25
|
+
export declare const RepoChangedParamsSchema: z.ZodObject<{
|
|
26
|
+
/** Absolute path to the repo's toplevel (the `git rev-parse --show-toplevel`
|
|
27
|
+
* value), which is the same key the pkg's RPC surface uses for `repo`. */
|
|
28
|
+
repo: z.ZodString;
|
|
29
|
+
/** Monotonic per-repo sequence, starting at 1, incremented once per emitted
|
|
30
|
+
* frame. Lets a consumer detect frames the relay's rate cap dropped: a gap
|
|
31
|
+
* means "you missed something, re-read the snapshot". */
|
|
32
|
+
seq: z.ZodNumber;
|
|
33
|
+
/** How many raw filesystem events this frame stands for (≥1). A large value
|
|
34
|
+
* is normal during a rebase or a branch switch. */
|
|
35
|
+
coalesced: z.ZodNumber;
|
|
36
|
+
/** `Date.now()` at emit time, in the MCP server's process. */
|
|
37
|
+
at: z.ZodNumber;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
at: number;
|
|
40
|
+
repo: string;
|
|
41
|
+
seq: number;
|
|
42
|
+
coalesced: number;
|
|
43
|
+
}, {
|
|
44
|
+
at: number;
|
|
45
|
+
repo: string;
|
|
46
|
+
seq: number;
|
|
47
|
+
coalesced: number;
|
|
48
|
+
}>;
|
|
49
|
+
/** The `repo.changed` payload — what a consumer actually wants. */
|
|
50
|
+
export type RepoChangedParams = z.infer<typeof RepoChangedParamsSchema>;
|
|
51
|
+
/** The JSON-RPC-shaped envelope the pkg's MCP server places in the logging
|
|
52
|
+
* frame's `data` field. */
|
|
53
|
+
export interface RepoChangedEnvelope {
|
|
54
|
+
method: typeof REPO_CHANGED_METHOD;
|
|
55
|
+
params: RepoChangedParams;
|
|
56
|
+
}
|
|
57
|
+
/** Zod schema for that envelope. */
|
|
58
|
+
export declare const RepoChangedEnvelopeSchema: z.ZodObject<{
|
|
59
|
+
method: z.ZodLiteral<"repo.changed">;
|
|
60
|
+
params: z.ZodObject<{
|
|
61
|
+
/** Absolute path to the repo's toplevel (the `git rev-parse --show-toplevel`
|
|
62
|
+
* value), which is the same key the pkg's RPC surface uses for `repo`. */
|
|
63
|
+
repo: z.ZodString;
|
|
64
|
+
/** Monotonic per-repo sequence, starting at 1, incremented once per emitted
|
|
65
|
+
* frame. Lets a consumer detect frames the relay's rate cap dropped: a gap
|
|
66
|
+
* means "you missed something, re-read the snapshot". */
|
|
67
|
+
seq: z.ZodNumber;
|
|
68
|
+
/** How many raw filesystem events this frame stands for (≥1). A large value
|
|
69
|
+
* is normal during a rebase or a branch switch. */
|
|
70
|
+
coalesced: z.ZodNumber;
|
|
71
|
+
/** `Date.now()` at emit time, in the MCP server's process. */
|
|
72
|
+
at: z.ZodNumber;
|
|
73
|
+
}, "strip", z.ZodTypeAny, {
|
|
74
|
+
at: number;
|
|
75
|
+
repo: string;
|
|
76
|
+
seq: number;
|
|
77
|
+
coalesced: number;
|
|
78
|
+
}, {
|
|
79
|
+
at: number;
|
|
80
|
+
repo: string;
|
|
81
|
+
seq: number;
|
|
82
|
+
coalesced: number;
|
|
83
|
+
}>;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
params: {
|
|
86
|
+
at: number;
|
|
87
|
+
repo: string;
|
|
88
|
+
seq: number;
|
|
89
|
+
coalesced: number;
|
|
90
|
+
};
|
|
91
|
+
method: "repo.changed";
|
|
92
|
+
}, {
|
|
93
|
+
params: {
|
|
94
|
+
at: number;
|
|
95
|
+
repo: string;
|
|
96
|
+
seq: number;
|
|
97
|
+
coalesced: number;
|
|
98
|
+
};
|
|
99
|
+
method: "repo.changed";
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Pull the `repo.changed` params out of anything the iframe might hand us,
|
|
103
|
+
* or return `null` if this isn't a `repo.changed` frame.
|
|
104
|
+
*
|
|
105
|
+
* Accepts three shapes, so a caller can pass whatever their notification
|
|
106
|
+
* handler gave them without unwrapping first:
|
|
107
|
+
*
|
|
108
|
+
* 1. the full relayed frame — `{ method: 'notifications/message',
|
|
109
|
+
* params: { level, logger, data: <envelope> } }`
|
|
110
|
+
* 2. the logging params alone — `{ level, logger, data: <envelope> }`
|
|
111
|
+
* (this is what `setNotificationHandler(LoggingMessageNotificationSchema,
|
|
112
|
+
* n => …)` hands you as `n.params`)
|
|
113
|
+
* 3. the bare envelope — `{ method: 'repo.changed', params: {…} }`
|
|
114
|
+
*
|
|
115
|
+
* Returns `null` for anything else, including a well-formed logging frame for
|
|
116
|
+
* a different topic. Never throws.
|
|
117
|
+
*/
|
|
118
|
+
export declare function readRepoChangedParams(value: unknown): RepoChangedParams | null;
|
|
119
|
+
/**
|
|
120
|
+
* Type guard over the same three shapes `readRepoChangedParams` accepts.
|
|
121
|
+
* Narrows only to "this carries a valid `repo.changed`" — call
|
|
122
|
+
* `readRepoChangedParams` to get the payload, since the guard cannot narrow
|
|
123
|
+
* through the outer wrapper.
|
|
124
|
+
*/
|
|
125
|
+
export declare function isRepoChangedNotification(value: unknown): boolean;
|
|
126
|
+
//# sourceMappingURL=app-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-bridge.d.ts","sourceRoot":"","sources":["../src/app-bridge.ts"],"names":[],"mappings":"AAoDA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,EAAG,cAAuB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,iDAAiD;AACjD,eAAO,MAAM,uBAAuB;IACnC;+EAC2E;;IAE3E;;8DAE0D;;IAE1D;wDACoD;;IAEpD,8DAA8D;;;;;;;;;;;;EAE7D,CAAC;AAEH,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;4BAC4B;AAC5B,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,MAAM,EAAE,iBAAiB,CAAC;CAC1B;AAED,oCAAoC;AACpC,eAAO,MAAM,yBAAyB;;;QAzBrC;mFAC2E;;QAE3E;;kEAE0D;;QAE1D;4DACoD;;QAEpD,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB7D,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAoB9E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEjE"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// `repo.changed` — the push a pkg's long-lived MCP server emits so its iframe
|
|
2
|
+
// learns that a git repo moved on disk, without polling.
|
|
3
|
+
//
|
|
4
|
+
// ─── Why this file is about an MCP notification, not a sidecar event ───────
|
|
5
|
+
//
|
|
6
|
+
// An earlier draft of this module described a `host-sidecar-event` push fed by
|
|
7
|
+
// `manifest.sidecars[]`. That path does not exist. Verified in shell source:
|
|
8
|
+
//
|
|
9
|
+
// • `manifest.sidecars[]` entries are NOT supervised — `src-tauri/src/pkg/
|
|
10
|
+
// registries/sidecars.rs` only resolves their binary paths.
|
|
11
|
+
// • `host.pkgSidecarCall` → `pkg_sidecar_call` spawns a FRESH process per
|
|
12
|
+
// call; it is one-shot request/response, with no stdout event stream.
|
|
13
|
+
// • The `pkg://sidecar/{pkgId}/{name}/message` Tauri event is emitted only
|
|
14
|
+
// by the lazy-spawn `pkg_sidecar_rpc_send` path, which no `host.*` verb
|
|
15
|
+
// reaches — so nothing an iframe can call ever produces one.
|
|
16
|
+
// • The only supervised long-lived child is a `manifest.mcp[]` entry with
|
|
17
|
+
// `lifecycle: "long-lived"` (`src-tauri/src/pkg/lifecycle.rs`).
|
|
18
|
+
//
|
|
19
|
+
// So the real push channel is the MCP notification relay that already ships:
|
|
20
|
+
//
|
|
21
|
+
// pkg MCP server shell (Rust) pkg iframe
|
|
22
|
+
// ────────────── ──────────── ──────────
|
|
23
|
+
// server.sendLoggingMessage( read loop matches AppBridge
|
|
24
|
+
// { level, logger, → `notifications/message` → notification
|
|
25
|
+
// data: <envelope> }) (lifecycle.rs:160), rate- handler for
|
|
26
|
+
// caps, emits the Tauri LoggingMessage-
|
|
27
|
+
// event `pkg-mcp-notification` Notification
|
|
28
|
+
// `{pkg_id, method, params}`
|
|
29
|
+
// (lifecycle.rs:154, ~1440-1460)
|
|
30
|
+
// ↓
|
|
31
|
+
// `shell/src/components/pkg/pkg-iframe-host.tsx`
|
|
32
|
+
// Step 3b filters on `pkg_id` and forwards
|
|
33
|
+
// `{method, params}` VERBATIM onto the bridge.
|
|
34
|
+
//
|
|
35
|
+
// The relayed top-level `method` is therefore always the literal string
|
|
36
|
+
// `notifications/message` — never `repo.changed`. The MCP spec's logging
|
|
37
|
+
// params are `{ level, logger, data }`, and `data` is free-form, so the pkg's
|
|
38
|
+
// own routing discriminant has to live inside `data`. `com.ikenga.git` puts a
|
|
39
|
+
// JSON-RPC-shaped envelope there:
|
|
40
|
+
//
|
|
41
|
+
// { level: 'info', logger: 'git-mcp/watcher',
|
|
42
|
+
// data: { method: 'repo.changed',
|
|
43
|
+
// params: { repo, seq, coalesced, at } } }
|
|
44
|
+
//
|
|
45
|
+
// (Same convention Studio already uses for its render events — see
|
|
46
|
+
// `ikenga-pkgs/packages/apps/studio/mcp/src/index.ts` `sendLoggingMessage` and
|
|
47
|
+
// the demux in `studio/src/studio/bridge.ts`.)
|
|
48
|
+
//
|
|
49
|
+
// This module types that envelope and gives the iframe a guard that accepts
|
|
50
|
+
// either the whole relayed frame or a bare `data` envelope, so a consumer
|
|
51
|
+
// doesn't have to hand-write the `params.data.method` reach.
|
|
52
|
+
import { z } from 'zod';
|
|
53
|
+
/** The `method` discriminant carried inside the logging frame's `data`. */
|
|
54
|
+
export const REPO_CHANGED_METHOD = 'repo.changed';
|
|
55
|
+
/**
|
|
56
|
+
* Per-pkg relay budget enforced by the Rust supervisor's MCP read loop.
|
|
57
|
+
*
|
|
58
|
+
* Mirrors `MCP_NOTIFICATION_MAX_PER_SEC` in
|
|
59
|
+
* `shell/src-tauri/src/pkg/lifecycle.rs:166` — this is a re-declaration for
|
|
60
|
+
* pkg authors, NOT a second enforcement point. The shell drops (never queues)
|
|
61
|
+
* frames past the cap, so an over-cap burst loses the middle of the run, not
|
|
62
|
+
* the tail.
|
|
63
|
+
*
|
|
64
|
+
* The window is **TUMBLING, not rolling**: the loop resets `window_start` to
|
|
65
|
+
* `now` and zeroes the counter the first time a frame arrives ≥1s after the
|
|
66
|
+
* window opened (`lifecycle.rs:~1427-1439`). A burst can therefore straddle
|
|
67
|
+
* two windows and land up to 2× this many frames inside one arbitrary
|
|
68
|
+
* one-second span — that is expected, not a leak.
|
|
69
|
+
*
|
|
70
|
+
* Practical consequence for a watcher: coalesce ruthlessly before sending.
|
|
71
|
+
* `repo.changed` carries `coalesced` precisely so one frame can stand for many
|
|
72
|
+
* filesystem events.
|
|
73
|
+
*/
|
|
74
|
+
export const HOST_NOTIFICATION_MAX_PER_SEC = 20;
|
|
75
|
+
/** Zod schema for the `repo.changed` payload. */
|
|
76
|
+
export const RepoChangedParamsSchema = z.object({
|
|
77
|
+
/** Absolute path to the repo's toplevel (the `git rev-parse --show-toplevel`
|
|
78
|
+
* value), which is the same key the pkg's RPC surface uses for `repo`. */
|
|
79
|
+
repo: z.string().min(1),
|
|
80
|
+
/** Monotonic per-repo sequence, starting at 1, incremented once per emitted
|
|
81
|
+
* frame. Lets a consumer detect frames the relay's rate cap dropped: a gap
|
|
82
|
+
* means "you missed something, re-read the snapshot". */
|
|
83
|
+
seq: z.number().int().nonnegative(),
|
|
84
|
+
/** How many raw filesystem events this frame stands for (≥1). A large value
|
|
85
|
+
* is normal during a rebase or a branch switch. */
|
|
86
|
+
coalesced: z.number().int().positive(),
|
|
87
|
+
/** `Date.now()` at emit time, in the MCP server's process. */
|
|
88
|
+
at: z.number().int().nonnegative(),
|
|
89
|
+
});
|
|
90
|
+
/** Zod schema for that envelope. */
|
|
91
|
+
export const RepoChangedEnvelopeSchema = z.object({
|
|
92
|
+
method: z.literal(REPO_CHANGED_METHOD),
|
|
93
|
+
params: RepoChangedParamsSchema,
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* Pull the `repo.changed` params out of anything the iframe might hand us,
|
|
97
|
+
* or return `null` if this isn't a `repo.changed` frame.
|
|
98
|
+
*
|
|
99
|
+
* Accepts three shapes, so a caller can pass whatever their notification
|
|
100
|
+
* handler gave them without unwrapping first:
|
|
101
|
+
*
|
|
102
|
+
* 1. the full relayed frame — `{ method: 'notifications/message',
|
|
103
|
+
* params: { level, logger, data: <envelope> } }`
|
|
104
|
+
* 2. the logging params alone — `{ level, logger, data: <envelope> }`
|
|
105
|
+
* (this is what `setNotificationHandler(LoggingMessageNotificationSchema,
|
|
106
|
+
* n => …)` hands you as `n.params`)
|
|
107
|
+
* 3. the bare envelope — `{ method: 'repo.changed', params: {…} }`
|
|
108
|
+
*
|
|
109
|
+
* Returns `null` for anything else, including a well-formed logging frame for
|
|
110
|
+
* a different topic. Never throws.
|
|
111
|
+
*/
|
|
112
|
+
export function readRepoChangedParams(value) {
|
|
113
|
+
if (typeof value !== 'object' || value === null)
|
|
114
|
+
return null;
|
|
115
|
+
const v = value;
|
|
116
|
+
// Shape 3 — bare envelope.
|
|
117
|
+
const bare = RepoChangedEnvelopeSchema.safeParse(v);
|
|
118
|
+
if (bare.success)
|
|
119
|
+
return bare.data.params;
|
|
120
|
+
// Shape 1 — full frame: descend into `params` and retry as shape 2.
|
|
121
|
+
if (v.method === 'notifications/message') {
|
|
122
|
+
return readRepoChangedParams(v.params);
|
|
123
|
+
}
|
|
124
|
+
// Shape 2 — logging params: the envelope is in `data`.
|
|
125
|
+
if ('data' in v) {
|
|
126
|
+
const inner = RepoChangedEnvelopeSchema.safeParse(v.data);
|
|
127
|
+
if (inner.success)
|
|
128
|
+
return inner.data.params;
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Type guard over the same three shapes `readRepoChangedParams` accepts.
|
|
134
|
+
* Narrows only to "this carries a valid `repo.changed`" — call
|
|
135
|
+
* `readRepoChangedParams` to get the payload, since the guard cannot narrow
|
|
136
|
+
* through the outer wrapper.
|
|
137
|
+
*/
|
|
138
|
+
export function isRepoChangedNotification(value) {
|
|
139
|
+
return readRepoChangedParams(value) !== null;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=app-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-bridge.js","sourceRoot":"","sources":["../src/app-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/artifact.d.ts
CHANGED
|
@@ -332,23 +332,23 @@ export declare const FallbackSchema: z.ZodEffects<z.ZodObject<{
|
|
|
332
332
|
banner: z.ZodOptional<z.ZodString>;
|
|
333
333
|
}, "strip", z.ZodTypeAny, {
|
|
334
334
|
mode: "mock";
|
|
335
|
-
dataTag?: string | undefined;
|
|
336
335
|
data?: string | undefined;
|
|
336
|
+
dataTag?: string | undefined;
|
|
337
337
|
banner?: string | undefined;
|
|
338
338
|
}, {
|
|
339
339
|
mode: "mock";
|
|
340
|
-
dataTag?: string | undefined;
|
|
341
340
|
data?: string | undefined;
|
|
341
|
+
dataTag?: string | undefined;
|
|
342
342
|
banner?: string | undefined;
|
|
343
343
|
}>, {
|
|
344
344
|
mode: "mock";
|
|
345
|
-
dataTag?: string | undefined;
|
|
346
345
|
data?: string | undefined;
|
|
346
|
+
dataTag?: string | undefined;
|
|
347
347
|
banner?: string | undefined;
|
|
348
348
|
}, {
|
|
349
349
|
mode: "mock";
|
|
350
|
-
dataTag?: string | undefined;
|
|
351
350
|
data?: string | undefined;
|
|
351
|
+
dataTag?: string | undefined;
|
|
352
352
|
banner?: string | undefined;
|
|
353
353
|
}>;
|
|
354
354
|
export declare const PinSchema: z.ZodObject<{
|
|
@@ -829,23 +829,23 @@ export declare const ArtifactManifestSchema: z.ZodObject<{
|
|
|
829
829
|
banner: z.ZodOptional<z.ZodString>;
|
|
830
830
|
}, "strip", z.ZodTypeAny, {
|
|
831
831
|
mode: "mock";
|
|
832
|
-
dataTag?: string | undefined;
|
|
833
832
|
data?: string | undefined;
|
|
833
|
+
dataTag?: string | undefined;
|
|
834
834
|
banner?: string | undefined;
|
|
835
835
|
}, {
|
|
836
836
|
mode: "mock";
|
|
837
|
-
dataTag?: string | undefined;
|
|
838
837
|
data?: string | undefined;
|
|
838
|
+
dataTag?: string | undefined;
|
|
839
839
|
banner?: string | undefined;
|
|
840
840
|
}>, {
|
|
841
841
|
mode: "mock";
|
|
842
|
-
dataTag?: string | undefined;
|
|
843
842
|
data?: string | undefined;
|
|
843
|
+
dataTag?: string | undefined;
|
|
844
844
|
banner?: string | undefined;
|
|
845
845
|
}, {
|
|
846
846
|
mode: "mock";
|
|
847
|
-
dataTag?: string | undefined;
|
|
848
847
|
data?: string | undefined;
|
|
848
|
+
dataTag?: string | undefined;
|
|
849
849
|
banner?: string | undefined;
|
|
850
850
|
}>;
|
|
851
851
|
pin: z.ZodOptional<z.ZodObject<{
|
|
@@ -1063,8 +1063,8 @@ export declare const ArtifactManifestSchema: z.ZodObject<{
|
|
|
1063
1063
|
}>;
|
|
1064
1064
|
fallback: {
|
|
1065
1065
|
mode: "mock";
|
|
1066
|
-
dataTag?: string | undefined;
|
|
1067
1066
|
data?: string | undefined;
|
|
1067
|
+
dataTag?: string | undefined;
|
|
1068
1068
|
banner?: string | undefined;
|
|
1069
1069
|
};
|
|
1070
1070
|
description?: string | undefined;
|
|
@@ -1189,8 +1189,8 @@ export declare const ArtifactManifestSchema: z.ZodObject<{
|
|
|
1189
1189
|
}>;
|
|
1190
1190
|
fallback: {
|
|
1191
1191
|
mode: "mock";
|
|
1192
|
-
dataTag?: string | undefined;
|
|
1193
1192
|
data?: string | undefined;
|
|
1193
|
+
dataTag?: string | undefined;
|
|
1194
1194
|
banner?: string | undefined;
|
|
1195
1195
|
};
|
|
1196
1196
|
description?: string | undefined;
|
package/dist/engine/adapter.d.ts
CHANGED
|
@@ -72,7 +72,7 @@ export interface McpServerSpec {
|
|
|
72
72
|
/**
|
|
73
73
|
* Capability flags every engine adapter advertises. This is the canonical
|
|
74
74
|
* shape consumed by both the shell-side ChatAdapter layer and any pkg that
|
|
75
|
-
* needs to reason about adapter features (wizard, settings UI,
|
|
75
|
+
* needs to reason about adapter features (wizard, settings UI, sidecar health).
|
|
76
76
|
*
|
|
77
77
|
* Fields are intentionally a *superset* of what any single adapter
|
|
78
78
|
* supports — an adapter sets the ones it implements to `true` and the
|
package/dist/engine/adapter.js
CHANGED
|
@@ -16,7 +16,7 @@ import { z } from 'zod';
|
|
|
16
16
|
/**
|
|
17
17
|
* Capability flags every engine adapter advertises. This is the canonical
|
|
18
18
|
* shape consumed by both the shell-side ChatAdapter layer and any pkg that
|
|
19
|
-
* needs to reason about adapter features (wizard, settings UI,
|
|
19
|
+
* needs to reason about adapter features (wizard, settings UI, sidecar health).
|
|
20
20
|
*
|
|
21
21
|
* Fields are intentionally a *superset* of what any single adapter
|
|
22
22
|
* supports — an adapter sets the ones it implements to `true` and the
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from './pa-actions.js';
|
|
|
11
11
|
export * from './window.js';
|
|
12
12
|
export * from './action-frontmatter.js';
|
|
13
13
|
export * from './host-context.js';
|
|
14
|
+
export * from './app-bridge.js';
|
|
14
15
|
/** This package's own version. */
|
|
15
16
|
export declare const CONTRACT_PACKAGE_VERSION: "0.5.0";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,kCAAkC;AAClC,eAAO,MAAM,wBAAwB,EAAG,OAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ export * from './pa-actions.js';
|
|
|
11
11
|
export * from './window.js';
|
|
12
12
|
export * from './action-frontmatter.js';
|
|
13
13
|
export * from './host-context.js';
|
|
14
|
+
export * from './app-bridge.js';
|
|
14
15
|
/** This package's own version. */
|
|
15
16
|
export const CONTRACT_PACKAGE_VERSION = '0.5.0';
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,kCAAkC;AAClC,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAgB,CAAC"}
|