@ikenga/contract 0.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ // Ikenga artifact manifest schema (v0.1).
2
+ //
3
+ // The artifact format is the small, agent-authorable single-file (or folder)
4
+ // HTML doc that renders standalone in any browser AND lights up with live
5
+ // data inside the Ikenga shell. This Zod schema is the source of truth for
6
+ // the manifest block embedded in `<script type="application/json"
7
+ // id="ikenga-manifest">…</script>` (single-file mode) or in
8
+ // `manifest.json` (folder mode).
9
+ //
10
+ // JSON Schema is generated from this file via `pnpm generate:schemas`
11
+ // into `schemas/artifact/v0.json` and published at:
12
+ // https://royalti-io.github.io/ikenga-contract/schemas/artifact/v0.json
13
+ //
14
+ // NOTE: this is **unrelated** to the pkg manifest in `./manifest.ts`. They
15
+ // describe different things (pkgs are Tauri-side mini-apps; artifacts are
16
+ // portable HTML docs). Don't conflate them.
17
+ import { z } from 'zod';
18
+ // ---------- Refresh modes ----------
19
+ export const RefreshSchema = z.discriminatedUnion('mode', [
20
+ z.object({ mode: z.literal('manual') }),
21
+ z.object({
22
+ mode: z.literal('interval'),
23
+ /** Duration string: `<number><unit>` where unit ∈ s|m|h|d. e.g. "30s", "15m", "1h", "1d". */
24
+ every: z.string().regex(/^\d+\s*(s|m|h|d)$/),
25
+ /** When true, also refresh whenever the artifact's pane regains focus. */
26
+ onFocus: z.boolean().optional(),
27
+ }),
28
+ /** File / realtime sources only — bridge subscribes via fs_watch or equivalent. */
29
+ z.object({ mode: z.literal('watch') }),
30
+ ]);
31
+ // ---------- Data sources ----------
32
+ const SourceSupabase = z.object({
33
+ type: z.literal('supabase'),
34
+ table: z.string(),
35
+ select: z.string().optional(),
36
+ /** PostgREST-style filters: `[column, operator, value][]`. */
37
+ filter: z.array(z.tuple([z.string(), z.string(), z.unknown()])).optional(),
38
+ refresh: RefreshSchema,
39
+ });
40
+ const SourceSql = z.object({
41
+ type: z.literal('sql'),
42
+ /** Logical DB name (e.g. `ikenga.local`). Resolved by the host. */
43
+ db: z.string(),
44
+ query: z.string(),
45
+ params: z.array(z.unknown()).optional(),
46
+ refresh: RefreshSchema,
47
+ });
48
+ const SourceFetch = z.object({
49
+ type: z.literal('fetch'),
50
+ url: z.string().url(),
51
+ method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).optional(),
52
+ headers: z.record(z.string()).optional(),
53
+ refresh: RefreshSchema,
54
+ });
55
+ const SourceMcp = z.object({
56
+ type: z.literal('mcp'),
57
+ server: z.string(),
58
+ tool: z.string(),
59
+ args: z.record(z.unknown()).optional(),
60
+ refresh: RefreshSchema,
61
+ });
62
+ const SourceFile = z.object({
63
+ type: z.literal('file'),
64
+ path: z.string(),
65
+ refresh: RefreshSchema,
66
+ });
67
+ export const DataSourceSchema = z.discriminatedUnion('type', [
68
+ SourceSupabase,
69
+ SourceSql,
70
+ SourceFetch,
71
+ SourceMcp,
72
+ SourceFile,
73
+ ]);
74
+ // ---------- Fallback ----------
75
+ export const FallbackSchema = z
76
+ .object({
77
+ mode: z.literal('mock'),
78
+ /** Single-file mode: id of the inline `<script type="application/json">` tag carrying mock data. */
79
+ dataTag: z.string().optional(),
80
+ /** Folder mode: relative path to a JSON file with mock data. */
81
+ data: z.string().optional(),
82
+ banner: z.string().optional(),
83
+ })
84
+ .refine((v) => !!v.dataTag || !!v.data, {
85
+ message: "fallback must specify either 'dataTag' (single-file) or 'data' (folder mode)",
86
+ });
87
+ // ---------- Misc top-level blocks ----------
88
+ export const PinSchema = z.object({
89
+ suggested: z.boolean().default(false),
90
+ /** Free-form section name. Host fuzzy-matches against existing sections at pin time. */
91
+ section: z.string().optional(),
92
+ label: z.string().optional(),
93
+ icon: z.object({ lucide: z.string() }).partial().optional(),
94
+ });
95
+ export const NotesSchema = z.object({
96
+ enabled: z.boolean().default(true),
97
+ });
98
+ export const RequiresSchema = z.object({
99
+ ikenga: z.string().optional(),
100
+ bridge: z.string().optional(),
101
+ });
102
+ export const IconSchema = z.object({
103
+ lucide: z.string().optional(),
104
+ }).partial();
105
+ /**
106
+ * Escape-hatch capabilities block. Default behaviour is to auto-derive
107
+ * capabilities from `dataSources`, so most artifacts omit this entirely.
108
+ * Use only when narrowing below the derived set, expressing capabilities
109
+ * sources can't (e.g. arbitrary FS reads), or driving raw `bridge.fetch` /
110
+ * `bridge.mcp` calls that aren't bound to a declared source.
111
+ */
112
+ export const CapabilitiesSchema = z.object({
113
+ network: z.object({ allow: z.array(z.string()) }).optional(),
114
+ supabase: z
115
+ .object({
116
+ project: z.string().optional(),
117
+ tables: z.array(z.string()).optional(),
118
+ rls: z.enum(['user', 'service']).optional(),
119
+ })
120
+ .optional(),
121
+ sqlite: z
122
+ .object({
123
+ db: z.string(),
124
+ queries: z.array(z.string()).optional(),
125
+ })
126
+ .optional(),
127
+ mcp: z
128
+ .array(z.object({
129
+ server: z.string(),
130
+ tools: z.array(z.string()).optional(),
131
+ }))
132
+ .optional(),
133
+ fs: z
134
+ .object({
135
+ read: z.array(z.string()).optional(),
136
+ write: z.array(z.string()).optional(),
137
+ })
138
+ .optional(),
139
+ });
140
+ // ---------- Top-level manifest ----------
141
+ export const ArtifactManifestSchema = z.object({
142
+ $schema: z.string().url().optional(),
143
+ format: z.literal('ikenga-artifact'),
144
+ /** Major.minor of the artifact format spec, e.g. "0.1". */
145
+ formatVersion: z.string(),
146
+ id: z.string().regex(/^[a-z0-9][a-z0-9-]*$/, { message: 'id must be kebab-case' }),
147
+ name: z.string(),
148
+ version: z.string(),
149
+ description: z.string().optional(),
150
+ author: z.string().optional(),
151
+ license: z.string().optional(),
152
+ /** Folder mode only — relative path to the entry HTML. Single-file artifacts omit this. */
153
+ entry: z.string().optional(),
154
+ icon: IconSchema.optional(),
155
+ dataSources: z.record(DataSourceSchema),
156
+ fallback: FallbackSchema,
157
+ pin: PinSchema.optional(),
158
+ notes: NotesSchema.optional(),
159
+ requires: RequiresSchema.optional(),
160
+ capabilities: CapabilitiesSchema.optional(),
161
+ });
162
+ /** Format-spec version this package's schema targets. Bumped together with the JSON Schema file. */
163
+ export const ARTIFACT_FORMAT_VERSION = '0.1';
164
+ //# sourceMappingURL=artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ export interface SessionOpts {
2
+ cwd?: string;
3
+ systemPrompt?: string;
4
+ toolAllowList?: string[];
5
+ /** Caller pkg id, used by the engine for per-pkg billing/audit. */
6
+ callerPkg?: string;
7
+ }
8
+ export interface Session {
9
+ readonly id: string;
10
+ /** Best-effort cancellation. Resolves once the engine has stopped streaming. */
11
+ cancel(): Promise<void>;
12
+ }
13
+ export type EngineEvent = {
14
+ type: 'message_delta';
15
+ text: string;
16
+ } | {
17
+ type: 'tool_use';
18
+ tool: string;
19
+ input: unknown;
20
+ toolUseId: string;
21
+ } | {
22
+ type: 'tool_result';
23
+ toolUseId: string;
24
+ output: unknown;
25
+ isError?: boolean;
26
+ } | {
27
+ type: 'thinking_delta';
28
+ text: string;
29
+ } | {
30
+ type: 'usage';
31
+ inputTokens: number;
32
+ outputTokens: number;
33
+ cacheCreationTokens?: number;
34
+ cacheReadTokens?: number;
35
+ } | {
36
+ type: 'done';
37
+ reason: 'stop' | 'cancel' | 'error';
38
+ error?: string;
39
+ };
40
+ export interface McpServerSpec {
41
+ id: string;
42
+ command: string;
43
+ args?: string[];
44
+ env?: Record<string, string>;
45
+ }
46
+ export interface Engine {
47
+ /** Stable identifier — matches the pkg id of the engine adapter. */
48
+ readonly id: string;
49
+ /** Human-readable adapter version. */
50
+ readonly version: string;
51
+ /** Open a new session. Sessions are cheap; create one per pkg invocation. */
52
+ startSession(opts: SessionOpts): Promise<Session>;
53
+ /** Send input and stream events. The iterable completes on `done`. */
54
+ stream(session: Session, input: string): AsyncIterable<EngineEvent>;
55
+ /** Register an MCP server with the engine. Idempotent on `id`. */
56
+ registerMcpServer(spec: McpServerSpec): Promise<void>;
57
+ /** Unregister an MCP server. */
58
+ unregisterMcpServer(id: string): Promise<void>;
59
+ /** Health check — used by the kernel before routing pkg requests. */
60
+ healthCheck(): Promise<{
61
+ ok: boolean;
62
+ reason?: string;
63
+ }>;
64
+ }
65
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACpH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,MAAM;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,6EAA6E;IAC7E,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,sEAAsE;IACtE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAEpE,kEAAkE;IAClE,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD,gCAAgC;IAChC,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,qEAAqE;IACrE,WAAW,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D"}
package/dist/engine.js ADDED
@@ -0,0 +1,7 @@
1
+ // Engine adapter contract. Implementations:
2
+ // - engine-claude-code (default, ships preinstalled)
3
+ // - engine-codex (future)
4
+ // - engine-aider (future)
5
+ // - engine-noop (testing / shell-without-AI mode)
6
+ export {};
7
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,wDAAwD;AACxD,mCAAmC;AACnC,mCAAmC;AACnC,4DAA4D"}
@@ -0,0 +1,9 @@
1
+ export * from './manifest.js';
2
+ export * from './rpc.js';
3
+ export * from './engine.js';
4
+ export * from './scopes.js';
5
+ export * from './iyke.js';
6
+ export * from './artifact.js';
7
+ /** This package's own version. */
8
+ export declare const CONTRACT_PACKAGE_VERSION: "0.3.0";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAE9B,kCAAkC;AAClC,eAAO,MAAM,wBAAwB,EAAG,OAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export * from './manifest.js';
2
+ export * from './rpc.js';
3
+ export * from './engine.js';
4
+ export * from './scopes.js';
5
+ export * from './iyke.js';
6
+ export * from './artifact.js';
7
+ /** This package's own version. */
8
+ export const CONTRACT_PACKAGE_VERSION = '0.3.0';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAE9B,kCAAkC;AAClC,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAgB,CAAC"}
package/dist/iyke.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Activity-bar sidebar modes the shell renders.
3
+ *
4
+ * - The first five (`app`, `files`, `agents`, `sessions`, `settings`) are
5
+ * core modes always present on the shell.
6
+ * - The remaining are mini-app modes contributed by built-in pkgs.
7
+ *
8
+ * MCP / iyke clients pass these strings to `iyke_mode` to switch the
9
+ * sidebar. Adding a new mode is a non-breaking minor bump (consumers can
10
+ * still pass any of the older modes). Removing or renaming is breaking.
11
+ */
12
+ export declare const ACTIVITY_MODES: readonly ["app", "files", "agents", "sessions", "settings", "storyboard", "video-engine", "canvas-design", "image-generator"];
13
+ export type ActivityMode = (typeof ACTIVITY_MODES)[number];
14
+ /**
15
+ * Names of mini-app surfaces the kernel exposes via `iyke_open` with
16
+ * `kind: "mini-app"`. Subset of {@link ACTIVITY_MODES} that map to a
17
+ * full-screen mini-app surface (not a plain sidebar mode).
18
+ */
19
+ export declare const MINI_APP_NAMES: readonly ["storyboard", "video-engine", "canvas-design", "image-generator"];
20
+ export type MiniAppName = (typeof MINI_APP_NAMES)[number];
21
+ //# sourceMappingURL=iyke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iyke.d.ts","sourceRoot":"","sources":["../src/iyke.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,+HAUjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,cAAc,6EAKjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC"}
package/dist/iyke.js ADDED
@@ -0,0 +1,38 @@
1
+ // Iyke runtime constants shared between the shell, the iyke CLI, and any
2
+ // MCP/RPC bridge that drives the shell. These are the activity modes the
3
+ // shell's sidebar knows about and the names of mini-app surfaces the
4
+ // kernel exposes — runtime values, not manifest schema.
5
+ /**
6
+ * Activity-bar sidebar modes the shell renders.
7
+ *
8
+ * - The first five (`app`, `files`, `agents`, `sessions`, `settings`) are
9
+ * core modes always present on the shell.
10
+ * - The remaining are mini-app modes contributed by built-in pkgs.
11
+ *
12
+ * MCP / iyke clients pass these strings to `iyke_mode` to switch the
13
+ * sidebar. Adding a new mode is a non-breaking minor bump (consumers can
14
+ * still pass any of the older modes). Removing or renaming is breaking.
15
+ */
16
+ export const ACTIVITY_MODES = [
17
+ 'app',
18
+ 'files',
19
+ 'agents',
20
+ 'sessions',
21
+ 'settings',
22
+ 'storyboard',
23
+ 'video-engine',
24
+ 'canvas-design',
25
+ 'image-generator',
26
+ ];
27
+ /**
28
+ * Names of mini-app surfaces the kernel exposes via `iyke_open` with
29
+ * `kind: "mini-app"`. Subset of {@link ACTIVITY_MODES} that map to a
30
+ * full-screen mini-app surface (not a plain sidebar mode).
31
+ */
32
+ export const MINI_APP_NAMES = [
33
+ 'storyboard',
34
+ 'video-engine',
35
+ 'canvas-design',
36
+ 'image-generator',
37
+ ];
38
+ //# sourceMappingURL=iyke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iyke.js","sourceRoot":"","sources":["../src/iyke.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,qEAAqE;AACrE,wDAAwD;AAExD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;IACZ,cAAc;IACd,eAAe;IACf,iBAAiB;CACT,CAAC;AAIX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY;IACZ,cAAc;IACd,eAAe;IACf,iBAAiB;CACT,CAAC"}