@ikenga/contract 0.5.0 → 0.6.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/dist/browser.d.ts +624 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +264 -0
- package/dist/browser.js.map +1 -0
- package/dist/engine/acp.d.ts +271 -0
- package/dist/engine/acp.d.ts.map +1 -0
- package/dist/engine/acp.js +13 -0
- package/dist/engine/acp.js.map +1 -0
- package/dist/{engine.d.ts → engine/adapter.d.ts} +60 -243
- package/dist/engine/adapter.d.ts.map +1 -0
- package/dist/{engine.js → engine/adapter.js} +14 -6
- package/dist/engine/adapter.js.map +1 -0
- package/dist/engine/errors.d.ts +17 -0
- package/dist/engine/errors.d.ts.map +1 -0
- package/dist/engine/errors.js +19 -0
- package/dist/engine/errors.js.map +1 -0
- package/dist/engine/index.d.ts +12 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +12 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +147 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +32 -1
- package/dist/manifest.js.map +1 -1
- package/dist/registry.d.ts +216 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +23 -0
- package/dist/registry.js.map +1 -1
- package/dist/rpc.d.ts +1 -1
- package/dist/rpc.d.ts.map +1 -1
- package/package.json +7 -3
- package/src/browser.test.ts +350 -0
- package/src/browser.ts +364 -0
- package/src/{engine.ts → engine/acp.ts} +49 -198
- package/src/engine/adapter.ts +243 -0
- package/src/{engine.test.ts → engine/engine.test.ts} +33 -2
- package/src/engine/errors.ts +20 -0
- package/src/engine/index.ts +12 -0
- package/src/index.ts +2 -1
- package/src/manifest.ts +35 -1
- package/src/registry.ts +25 -0
- package/src/rpc.ts +1 -1
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js.map +0 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy Engine adapter shape. New adapters target `./acp.ts`. Both are
|
|
3
|
+
* exported through `@ikenga/contract/engine` during the deprecation cycle.
|
|
4
|
+
*
|
|
5
|
+
* Engine adapter contract. Implementations:
|
|
6
|
+
* - engine-claude-code (default, ships preinstalled)
|
|
7
|
+
* - engine-codex (future)
|
|
8
|
+
* - engine-aider (future)
|
|
9
|
+
* - engine-noop (testing / shell-without-AI mode)
|
|
10
|
+
*
|
|
11
|
+
* @deprecated Phase 11 retires this surface. New adapters target the ACP
|
|
12
|
+
* shape in `./acp.ts` (`AcpEngine`, `createAcpEngine`, `AcpHost`).
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
|
|
17
|
+
/** @deprecated Use the ACP shape in `./acp.ts`. */
|
|
18
|
+
export interface SessionOpts {
|
|
19
|
+
cwd?: string;
|
|
20
|
+
systemPrompt?: string;
|
|
21
|
+
toolAllowList?: string[];
|
|
22
|
+
/** Caller pkg id, used by the engine for per-pkg billing/audit. */
|
|
23
|
+
callerPkg?: string;
|
|
24
|
+
/** Model override for the session (adapter-specific). */
|
|
25
|
+
model?: string;
|
|
26
|
+
/** Resume a prior session by id (adapter-specific; requires sessionResume cap). */
|
|
27
|
+
resumeSessionId?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** @deprecated Use the ACP shape in `./acp.ts`. */
|
|
31
|
+
export interface Session {
|
|
32
|
+
readonly id: string;
|
|
33
|
+
/** Best-effort cancellation. Resolves once the engine has stopped streaming. */
|
|
34
|
+
cancel(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** @deprecated Use `AcpSessionUpdate` from `./acp.ts`. */
|
|
38
|
+
export type EngineEvent =
|
|
39
|
+
| { type: 'message_delta'; text: string }
|
|
40
|
+
| { type: 'tool_use'; tool: string; input: unknown; toolUseId: string }
|
|
41
|
+
| { type: 'tool_result'; toolUseId: string; output: unknown; isError?: boolean }
|
|
42
|
+
| { type: 'thinking_delta'; text: string }
|
|
43
|
+
| { type: 'usage'; inputTokens: number; outputTokens: number; cacheCreationTokens?: number; cacheReadTokens?: number }
|
|
44
|
+
| { type: 'done'; reason: 'stop' | 'cancel' | 'error'; error?: string };
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* MCP server spec. Shared between the legacy `Engine` surface and the ACP
|
|
48
|
+
* `newSession` request — not marked `@deprecated` because the ACP shape
|
|
49
|
+
* reuses it verbatim.
|
|
50
|
+
*/
|
|
51
|
+
export interface McpServerSpec {
|
|
52
|
+
id: string;
|
|
53
|
+
command: string;
|
|
54
|
+
args?: string[];
|
|
55
|
+
env?: Record<string, string>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ---------- Capabilities (single source of truth) ----------
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Capability flags every engine adapter advertises. This is the canonical
|
|
62
|
+
* shape consumed by both the shell-side ChatAdapter layer and any pkg that
|
|
63
|
+
* needs to reason about adapter features (wizard, settings UI, telemetry).
|
|
64
|
+
*
|
|
65
|
+
* Fields are intentionally a *superset* of what any single adapter
|
|
66
|
+
* supports — an adapter sets the ones it implements to `true` and the
|
|
67
|
+
* rest to `false`. Adding a new flag is a non-breaking schema change so
|
|
68
|
+
* long as adapters default it to `false` until they implement it.
|
|
69
|
+
*/
|
|
70
|
+
export const AgentCapabilitiesSchema = z.object({
|
|
71
|
+
/** Streams partial responses as they arrive (vs. all-at-once). */
|
|
72
|
+
streaming: z.boolean(),
|
|
73
|
+
/** Invokes external tools / function calls during a turn. */
|
|
74
|
+
toolUse: z.boolean(),
|
|
75
|
+
/** Emits an extended-thinking / reasoning channel separate from output. */
|
|
76
|
+
thinking: z.boolean(),
|
|
77
|
+
/** Produces structured artifacts (code blocks, files, images) the host renders. */
|
|
78
|
+
artifacts: z.boolean(),
|
|
79
|
+
/** Accepts file attachments as part of an input. */
|
|
80
|
+
fileAttachments: z.boolean(),
|
|
81
|
+
/** Accepts image input (vision). */
|
|
82
|
+
imageInput: z.boolean(),
|
|
83
|
+
/** Recognises a `/slash` command vocabulary. */
|
|
84
|
+
slashCommands: z.boolean(),
|
|
85
|
+
/** Lets the user switch models mid-thread. */
|
|
86
|
+
modelSwitching: z.boolean(),
|
|
87
|
+
/** Uses prompt-caching for repeated context (Anthropic-specific today). */
|
|
88
|
+
promptCaching: z.boolean(),
|
|
89
|
+
/** Runs agentic tools (recursive sub-agents, long-running loops). */
|
|
90
|
+
agenticTools: z.boolean(),
|
|
91
|
+
/** Speaks MCP — can register and route through MCP servers. */
|
|
92
|
+
mcp: z.boolean(),
|
|
93
|
+
/** Can resume a prior session by id. */
|
|
94
|
+
sessionResume: z.boolean(),
|
|
95
|
+
});
|
|
96
|
+
export type AgentCapabilities = z.infer<typeof AgentCapabilitiesSchema>;
|
|
97
|
+
|
|
98
|
+
// ---------- Engine pkg manifest "engine" block ----------
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Per-adapter onboarding requirements surfaced in the first-run wizard.
|
|
102
|
+
* The wizard composes these instead of hardcoding per-agent forms —
|
|
103
|
+
* every engine pkg owns its own setup story.
|
|
104
|
+
*/
|
|
105
|
+
export const EngineOnboardingSchema = z.object({
|
|
106
|
+
/** Stronghold-vault keys this adapter needs at runtime (e.g. `ANTHROPIC_API_KEY`). */
|
|
107
|
+
requiredVaultKeys: z.array(z.string()).default([]),
|
|
108
|
+
/** Plain env-vars the adapter expects on the host shell. */
|
|
109
|
+
requiredEnvVars: z.array(z.string()).default([]),
|
|
110
|
+
/**
|
|
111
|
+
* CLI command the user can run to authenticate. The wizard surfaces this
|
|
112
|
+
* as a copy-to-clipboard hint — it never shells out on the user's behalf.
|
|
113
|
+
*/
|
|
114
|
+
authCommand: z.string().optional(),
|
|
115
|
+
/** Docs URL for setting up this adapter. */
|
|
116
|
+
docsUrl: z.string().url().optional(),
|
|
117
|
+
});
|
|
118
|
+
export type EngineOnboarding = z.infer<typeof EngineOnboardingSchema>;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Manifest block declared by engine-* pkgs. Read by the shell's
|
|
122
|
+
* `AdapterLoader` at pkg-discovery time; consumed by the wizard to compose
|
|
123
|
+
* adapter-specific onboarding hints.
|
|
124
|
+
*/
|
|
125
|
+
export const EngineProvidesSchema = z.object({
|
|
126
|
+
/**
|
|
127
|
+
* Stable id — matches the detection-side agent id (e.g. `claude-code`,
|
|
128
|
+
* `codex`, `aider`, `noop`). The wizard's `selected_agent_id` is matched
|
|
129
|
+
* against this field at adapter-resolve time.
|
|
130
|
+
*/
|
|
131
|
+
agentId: z.string().min(1),
|
|
132
|
+
/** Display name; overrides any detection-side display if both present. */
|
|
133
|
+
display: z.string().optional(),
|
|
134
|
+
/** Snapshot of what this adapter implements. */
|
|
135
|
+
capabilities: AgentCapabilitiesSchema,
|
|
136
|
+
/** Onboarding requirements composed by the wizard. */
|
|
137
|
+
onboarding: EngineOnboardingSchema.default({
|
|
138
|
+
requiredVaultKeys: [],
|
|
139
|
+
requiredEnvVars: [],
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
export type EngineProvides = z.infer<typeof EngineProvidesSchema>;
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Static metadata every adapter surfaces via `Engine.metadata`. Mirrors the
|
|
146
|
+
* manifest's `engine` block so the shell + wizard can introspect without
|
|
147
|
+
* re-parsing the manifest.
|
|
148
|
+
*/
|
|
149
|
+
export interface EngineMetadata {
|
|
150
|
+
agentId: string;
|
|
151
|
+
display: string;
|
|
152
|
+
capabilities: AgentCapabilities;
|
|
153
|
+
onboarding: EngineOnboarding;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ---------- Host bridge (legacy) ----------
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Tauri-command surface the host shell exposes to legacy `Engine` adapters.
|
|
160
|
+
* The shell binds these names to its `claude_chat_*` commands; adapters
|
|
161
|
+
* never call `invoke()` directly so they remain testable.
|
|
162
|
+
*
|
|
163
|
+
* @deprecated Use the ACP shape (`AcpHost` in `./acp.ts`) for new adapters.
|
|
164
|
+
*/
|
|
165
|
+
export interface HostBridge {
|
|
166
|
+
spawn(opts: {
|
|
167
|
+
sessionId: string;
|
|
168
|
+
cwd?: string;
|
|
169
|
+
systemPrompt?: string;
|
|
170
|
+
model?: string;
|
|
171
|
+
resumeSessionId?: string;
|
|
172
|
+
}): Promise<void>;
|
|
173
|
+
send(sessionId: string, message: string): Promise<void>;
|
|
174
|
+
kill(sessionId: string): Promise<void>;
|
|
175
|
+
listen(sessionId: string): AsyncIterable<EngineEvent>;
|
|
176
|
+
registerMcp(spec: McpServerSpec): Promise<void>;
|
|
177
|
+
unregisterMcp(id: string): Promise<void>;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// ---------- Engine adapter runtime contract ----------
|
|
181
|
+
|
|
182
|
+
/** @deprecated Use `AcpEngine` from `./acp.ts`. Legacy shape retired in Phase 11. */
|
|
183
|
+
export interface Engine {
|
|
184
|
+
/** Stable identifier — matches the pkg id of the engine adapter. */
|
|
185
|
+
readonly id: string;
|
|
186
|
+
|
|
187
|
+
/** Human-readable adapter version. */
|
|
188
|
+
readonly version: string;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Static metadata copied from the loading manifest's `engine` block.
|
|
192
|
+
* Required: every adapter must surface its agentId / display / capabilities
|
|
193
|
+
* / onboarding so the shell and wizard can introspect without re-parsing
|
|
194
|
+
* the manifest.
|
|
195
|
+
*/
|
|
196
|
+
readonly metadata: EngineMetadata;
|
|
197
|
+
|
|
198
|
+
/** Open a new session. Sessions are cheap; create one per pkg invocation. */
|
|
199
|
+
startSession(opts: SessionOpts): Promise<Session>;
|
|
200
|
+
|
|
201
|
+
/** Send input and stream events. The iterable completes on `done`. */
|
|
202
|
+
stream(session: Session, input: string): AsyncIterable<EngineEvent>;
|
|
203
|
+
|
|
204
|
+
/** Register an MCP server with the engine. Idempotent on `id`. */
|
|
205
|
+
registerMcpServer(spec: McpServerSpec): Promise<void>;
|
|
206
|
+
|
|
207
|
+
/** Unregister an MCP server. */
|
|
208
|
+
unregisterMcpServer(id: string): Promise<void>;
|
|
209
|
+
|
|
210
|
+
/** Health check — used by the kernel before routing pkg requests. */
|
|
211
|
+
healthCheck(): Promise<{ ok: boolean; reason?: string }>;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// ---------- Adapter loader contract ----------
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Loader the shell uses to bring engine-* pkgs online at boot, tear them
|
|
218
|
+
* down on removal, and gracefully fall back when the user's
|
|
219
|
+
* `selected_agent_id` has no installed adapter.
|
|
220
|
+
*
|
|
221
|
+
* Implementation lives shell-side (post-Phase-7); this interface lets
|
|
222
|
+
* the contract pin the shape so engine pkgs and the shell agree on the
|
|
223
|
+
* load lifecycle.
|
|
224
|
+
*/
|
|
225
|
+
export interface AdapterLoader {
|
|
226
|
+
/**
|
|
227
|
+
* Load + register the engine for a given pkg manifest. The manifest must
|
|
228
|
+
* carry an `engine` block (see `EngineProvidesSchema`); the loader
|
|
229
|
+
* resolves the adapter implementation and threads the manifest's
|
|
230
|
+
* metadata into the returned `Engine.metadata`.
|
|
231
|
+
*/
|
|
232
|
+
load(manifest: { id: string; engine: EngineProvides }): Promise<Engine>;
|
|
233
|
+
|
|
234
|
+
/** Unload — used on pkg removal. After this resolves the agentId is unregistered. */
|
|
235
|
+
unload(agentId: string): Promise<void>;
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Fallback returned when the requested agentId has no registered loader.
|
|
239
|
+
* Implementations MUST return a working `engine-noop` (or equivalent
|
|
240
|
+
* inert) adapter so the chat surface never dead-ends.
|
|
241
|
+
*/
|
|
242
|
+
fallback(): Engine;
|
|
243
|
+
}
|
|
@@ -2,13 +2,14 @@ import { test } from 'node:test';
|
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
3
|
import {
|
|
4
4
|
AgentCapabilitiesSchema,
|
|
5
|
+
EngineNotImplementedError,
|
|
5
6
|
EngineOnboardingSchema,
|
|
6
7
|
EngineProvidesSchema,
|
|
7
8
|
type AgentCapabilities,
|
|
8
9
|
type Engine,
|
|
9
10
|
type EngineProvides,
|
|
10
|
-
} from './
|
|
11
|
-
import { ManifestSchema, PkgManifestSchema } from '
|
|
11
|
+
} from './index.js';
|
|
12
|
+
import { ManifestSchema, PkgManifestSchema } from '../manifest.js';
|
|
12
13
|
|
|
13
14
|
const fullCaps: AgentCapabilities = {
|
|
14
15
|
streaming: true,
|
|
@@ -203,3 +204,33 @@ test('AdapterLoader.load consumes a manifest carrying EngineProvides', () => {
|
|
|
203
204
|
};
|
|
204
205
|
assert.equal(input.engine.agentId, 'codex');
|
|
205
206
|
});
|
|
207
|
+
|
|
208
|
+
// ---------------- EngineNotImplementedError ----------------
|
|
209
|
+
|
|
210
|
+
test('EngineNotImplementedError constructs cleanly with engineId only', () => {
|
|
211
|
+
const err = new EngineNotImplementedError('codex');
|
|
212
|
+
assert.equal(err.engineId, 'codex');
|
|
213
|
+
assert.equal(err.docsUrl, undefined);
|
|
214
|
+
assert.equal(err.message, 'Engine codex is not implemented yet');
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
test('EngineNotImplementedError constructs with docsUrl + custom message', () => {
|
|
218
|
+
const err = new EngineNotImplementedError('gemini', {
|
|
219
|
+
docsUrl: 'https://example.com/gemini-setup',
|
|
220
|
+
message: 'Gemini adapter is gated behind feature flag',
|
|
221
|
+
});
|
|
222
|
+
assert.equal(err.engineId, 'gemini');
|
|
223
|
+
assert.equal(err.docsUrl, 'https://example.com/gemini-setup');
|
|
224
|
+
assert.equal(err.message, 'Gemini adapter is gated behind feature flag');
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
test('EngineNotImplementedError is instanceof Error and EngineNotImplementedError', () => {
|
|
228
|
+
const err = new EngineNotImplementedError('aider');
|
|
229
|
+
assert.ok(err instanceof Error);
|
|
230
|
+
assert.ok(err instanceof EngineNotImplementedError);
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
test("EngineNotImplementedError.name is exactly 'EngineNotImplementedError'", () => {
|
|
234
|
+
const err = new EngineNotImplementedError('codex');
|
|
235
|
+
assert.equal(err.name, 'EngineNotImplementedError');
|
|
236
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error types for engine adapters.
|
|
3
|
+
*
|
|
4
|
+
* Stub adapters (e.g. `engine-codex`, `engine-gemini`) detect a CLI on the
|
|
5
|
+
* host but don't yet implement `send` / `prompt`. They throw
|
|
6
|
+
* `EngineNotImplementedError` so the shell can render an actionable
|
|
7
|
+
* onboarding hint (the optional `docsUrl`) instead of a generic crash.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export class EngineNotImplementedError extends Error {
|
|
11
|
+
readonly engineId: string;
|
|
12
|
+
readonly docsUrl?: string;
|
|
13
|
+
|
|
14
|
+
constructor(engineId: string, opts?: { docsUrl?: string; message?: string }) {
|
|
15
|
+
super(opts?.message ?? `Engine ${engineId} is not implemented yet`);
|
|
16
|
+
this.name = 'EngineNotImplementedError';
|
|
17
|
+
this.engineId = engineId;
|
|
18
|
+
this.docsUrl = opts?.docsUrl;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@ikenga/contract/engine` — engine adapter surface.
|
|
3
|
+
*
|
|
4
|
+
* Exports BOTH the legacy `Engine` shape (`./adapter`) and the ACP-shaped
|
|
5
|
+
* surface (`./acp`) side-by-side for one deprecation cycle. Legacy types
|
|
6
|
+
* carry `@deprecated` JSDoc pointing at the ACP path. Shared error types
|
|
7
|
+
* live in `./errors`.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export * from './adapter.js';
|
|
11
|
+
export * from './acp.js';
|
|
12
|
+
export * from './errors.js';
|
package/src/index.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from './manifest.js';
|
|
2
2
|
export * from './rpc.js';
|
|
3
|
-
export * from './engine.js';
|
|
3
|
+
export * from './engine/index.js';
|
|
4
4
|
export * from './scopes.js';
|
|
5
5
|
export * from './iyke.js';
|
|
6
6
|
export * from './artifact.js';
|
|
7
7
|
export * from './registry.js';
|
|
8
|
+
export * from './browser.js';
|
|
8
9
|
|
|
9
10
|
/** This package's own version. */
|
|
10
11
|
export const CONTRACT_PACKAGE_VERSION = '0.5.0' as const;
|
package/src/manifest.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// On disk: `<pkg-root>/manifest.json` (JSON, not TOML).
|
|
10
10
|
|
|
11
11
|
import { z } from 'zod';
|
|
12
|
-
import { EngineProvidesSchema } from './engine.js';
|
|
12
|
+
import { EngineProvidesSchema } from './engine/index.js';
|
|
13
13
|
|
|
14
14
|
export const IKENGA_API_VERSION = 1 as const;
|
|
15
15
|
export const IKENGA_API_MIN_SUPPORTED = 1 as const;
|
|
@@ -28,6 +28,14 @@ export const McpServerSchema = z.object({
|
|
|
28
28
|
env: z.record(z.string()).default({}),
|
|
29
29
|
/** "per-call" (default) | "long-lived" */
|
|
30
30
|
lifecycle: z.enum(['per-call', 'long-lived']).optional(),
|
|
31
|
+
/** Phase 9: glob patterns relative to pkg dir; supervisor restarts the
|
|
32
|
+
* long-lived child 250 ms after any matched file changes. Per-call entries
|
|
33
|
+
* ignore this. Empty = no watcher. */
|
|
34
|
+
restart_when_changed: z.array(z.string()).default([]),
|
|
35
|
+
/** Phase 9: auto-restart on unexpected exit. Default true (existing
|
|
36
|
+
* supervisor behavior). Set false for one-shot long-lived tools. Per-call
|
|
37
|
+
* entries ignore this. */
|
|
38
|
+
auto_restart: z.boolean().default(true),
|
|
31
39
|
});
|
|
32
40
|
export type McpServer = z.infer<typeof McpServerSchema>;
|
|
33
41
|
|
|
@@ -38,6 +46,12 @@ export const SidecarSpecSchema = z.object({
|
|
|
38
46
|
bin: z.string(),
|
|
39
47
|
/** "json" (default) | "raw" */
|
|
40
48
|
stdio: z.string().default('json'),
|
|
49
|
+
/** Phase 9: glob patterns relative to pkg dir; supervisor restarts the
|
|
50
|
+
* sidecar 250 ms after any matched file changes. Empty = no watcher. */
|
|
51
|
+
restart_when_changed: z.array(z.string()).default([]),
|
|
52
|
+
/** Phase 9: auto-restart on unexpected exit. Default true (existing
|
|
53
|
+
* supervisor behavior). Set false for one-shot tools. */
|
|
54
|
+
auto_restart: z.boolean().default(true),
|
|
41
55
|
});
|
|
42
56
|
export type SidecarSpec = z.infer<typeof SidecarSpecSchema>;
|
|
43
57
|
|
|
@@ -133,6 +147,18 @@ export const QueriesBlockSchema = z.object({
|
|
|
133
147
|
key_prefixes: z.array(z.string()).default([]),
|
|
134
148
|
});
|
|
135
149
|
|
|
150
|
+
/**
|
|
151
|
+
* UI preview screenshot. `path` is relative to the package's install_path
|
|
152
|
+
* for bundled pkgs; the shell resolves it to a webview-loadable URL on
|
|
153
|
+
* render. Registry pkgs surface absolute https:// URLs through the
|
|
154
|
+
* `screenshots` array on the registry entry (see `./registry.ts`).
|
|
155
|
+
*/
|
|
156
|
+
export const ScreenshotSchema = z.object({
|
|
157
|
+
path: z.string(),
|
|
158
|
+
caption: z.string().optional(),
|
|
159
|
+
});
|
|
160
|
+
export type Screenshot = z.infer<typeof ScreenshotSchema>;
|
|
161
|
+
|
|
136
162
|
// ---------- Manifest ----------
|
|
137
163
|
|
|
138
164
|
export const ManifestSchema = z.object({
|
|
@@ -171,6 +197,14 @@ export const ManifestSchema = z.object({
|
|
|
171
197
|
* See `@ikenga/contract/engine` for the source-of-truth schema.
|
|
172
198
|
*/
|
|
173
199
|
engine: EngineProvidesSchema.optional(),
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Optional UI preview screenshots surfaced by the package manager and the
|
|
203
|
+
* install sheet. `path` is relative to the package's install_path; the
|
|
204
|
+
* shell mints a webview-loadable URL for it on render. Packages without
|
|
205
|
+
* UI (engines, MCP-only servers) typically leave this empty.
|
|
206
|
+
*/
|
|
207
|
+
screenshots: z.array(ScreenshotSchema).default([]),
|
|
174
208
|
});
|
|
175
209
|
|
|
176
210
|
export type Manifest = z.infer<typeof ManifestSchema>;
|
package/src/registry.ts
CHANGED
|
@@ -33,6 +33,17 @@ export const PkgDepSchema = z.object({
|
|
|
33
33
|
});
|
|
34
34
|
export type PkgDep = z.infer<typeof PkgDepSchema>;
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Hosted preview screenshot for a registry pkg. The publish workflow uploads
|
|
38
|
+
* each `manifest.screenshots[].path` to a CDN and emits the absolute URL
|
|
39
|
+
* here, so the shell can render a preview without downloading the pkg.
|
|
40
|
+
*/
|
|
41
|
+
export const HostedScreenshotSchema = z.object({
|
|
42
|
+
url: z.string().url(),
|
|
43
|
+
caption: z.string().optional(),
|
|
44
|
+
});
|
|
45
|
+
export type HostedScreenshot = z.infer<typeof HostedScreenshotSchema>;
|
|
46
|
+
|
|
36
47
|
export const PkgVersionSchema = z.object({
|
|
37
48
|
/** Semver, e.g. `0.1.0`. */
|
|
38
49
|
version: z.string(),
|
|
@@ -48,6 +59,14 @@ export const PkgVersionSchema = z.object({
|
|
|
48
59
|
manifest: ManifestSchema,
|
|
49
60
|
/** Cross-pkg deps within `@ikenga/pkg-*`. External deps ride in the tarball. */
|
|
50
61
|
deps: z.array(PkgDepSchema).default([]),
|
|
62
|
+
/**
|
|
63
|
+
* Absolute URLs for the screenshots declared in the manifest. The publish
|
|
64
|
+
* workflow uploads `manifest.screenshots[].path` files to a CDN and emits
|
|
65
|
+
* the resulting URL here; consumers should prefer these over the relative
|
|
66
|
+
* `manifest.screenshots[].path` values (which are only meaningful after
|
|
67
|
+
* install). Same order as `manifest.screenshots`; captions are mirrored.
|
|
68
|
+
*/
|
|
69
|
+
screenshots: z.array(HostedScreenshotSchema).default([]),
|
|
51
70
|
});
|
|
52
71
|
export type PkgVersion = z.infer<typeof PkgVersionSchema>;
|
|
53
72
|
|
|
@@ -80,6 +99,12 @@ export const RegistryEntrySchema = z.object({
|
|
|
80
99
|
description: z.string().optional(),
|
|
81
100
|
/** Manifest `kind` hint ("engine" | "skill" | "embedded" | "windowed"). */
|
|
82
101
|
kind: z.string().optional(),
|
|
102
|
+
/**
|
|
103
|
+
* Hero screenshot URL for the catalog row thumbnail. Set to the first
|
|
104
|
+
* uploaded screenshot of the latest version. Omitted for pkgs without UI.
|
|
105
|
+
* Lets the shell render a thumb without fetching the per-pkg detail file.
|
|
106
|
+
*/
|
|
107
|
+
screenshot: z.string().url().optional(),
|
|
83
108
|
});
|
|
84
109
|
export type RegistryEntry = z.infer<typeof RegistryEntrySchema>;
|
|
85
110
|
|
package/src/rpc.ts
CHANGED
|
@@ -85,7 +85,7 @@ export interface RpcMethods {
|
|
|
85
85
|
|
|
86
86
|
// Notifications: shell → pkg
|
|
87
87
|
export interface ShellToPkgNotifications {
|
|
88
|
-
'engine.event': { sessionId: string; event: import('./engine.js').EngineEvent };
|
|
88
|
+
'engine.event': { sessionId: string; event: import('./engine/index.js').EngineEvent };
|
|
89
89
|
'shell.theme_changed': { theme: 'light' | 'dark' };
|
|
90
90
|
'shell.pane_focused': { focused: boolean };
|
|
91
91
|
}
|
package/dist/engine.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,wDAAwD;AACxD,mCAAmC;AACnC,mCAAmC;AACnC,4DAA4D;AAE5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,8DAA8D;AAE9D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,kEAAkE;IAClE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,6DAA6D;IAC7D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,mFAAmF;IACnF,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,oDAAoD;IACpD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE;IAC5B,oCAAoC;IACpC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,gDAAgD;IAChD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,8CAA8C;IAC9C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,2EAA2E;IAC3E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,qEAAqE;IACrE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,+DAA+D;IAC/D,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;IAChB,wCAAwC;IACxC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;CAC3B,CAAC,CAAC;AAGH,2DAA2D;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,sFAAsF;IACtF,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,4DAA4D;IAC5D,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD;;;OAGG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,4CAA4C;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;;;OAIG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,0EAA0E;IAC1E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,gDAAgD;IAChD,YAAY,EAAE,uBAAuB;IACrC,sDAAsD;IACtD,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC;QACzC,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;KACpB,CAAC;CACH,CAAC,CAAC"}
|