@vibesdotdev/integrations-pi 0.0.0-stage → 1.0.0-rc.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.
Files changed (163) hide show
  1. package/LICENSE +126 -0
  2. package/REFERENCE.md +284 -0
  3. package/dist/extension/active-tools.d.ts +17 -0
  4. package/dist/extension/active-tools.d.ts.map +1 -0
  5. package/dist/extension/active-tools.js +47 -0
  6. package/dist/extension/active-tools.js.map +1 -0
  7. package/dist/extension/approvals.d.ts +26 -0
  8. package/dist/extension/approvals.d.ts.map +1 -0
  9. package/dist/extension/approvals.js +124 -0
  10. package/dist/extension/approvals.js.map +1 -0
  11. package/dist/extension/boot.d.ts +18 -0
  12. package/dist/extension/boot.d.ts.map +1 -0
  13. package/dist/extension/boot.js +129 -0
  14. package/dist/extension/boot.js.map +1 -0
  15. package/dist/extension/chrome.d.ts +33 -0
  16. package/dist/extension/chrome.d.ts.map +1 -0
  17. package/dist/extension/chrome.js +167 -0
  18. package/dist/extension/chrome.js.map +1 -0
  19. package/dist/extension/commands.d.ts +41 -0
  20. package/dist/extension/commands.d.ts.map +1 -0
  21. package/dist/extension/commands.js +47 -0
  22. package/dist/extension/commands.js.map +1 -0
  23. package/dist/extension/entry.d.ts +9 -0
  24. package/dist/extension/entry.d.ts.map +1 -0
  25. package/dist/extension/entry.js +16 -0
  26. package/dist/extension/entry.js.map +1 -0
  27. package/dist/extension/events.d.ts +17 -0
  28. package/dist/extension/events.d.ts.map +1 -0
  29. package/dist/extension/events.js +42 -0
  30. package/dist/extension/events.js.map +1 -0
  31. package/dist/extension/index.d.ts +54 -0
  32. package/dist/extension/index.d.ts.map +1 -0
  33. package/dist/extension/index.js +541 -0
  34. package/dist/extension/index.js.map +1 -0
  35. package/dist/extension/models.d.ts +30 -0
  36. package/dist/extension/models.d.ts.map +1 -0
  37. package/dist/extension/models.js +104 -0
  38. package/dist/extension/models.js.map +1 -0
  39. package/dist/extension/render.d.ts +17 -0
  40. package/dist/extension/render.d.ts.map +1 -0
  41. package/dist/extension/render.js +107 -0
  42. package/dist/extension/render.js.map +1 -0
  43. package/dist/extension/runtime-host.d.ts +6 -0
  44. package/dist/extension/runtime-host.d.ts.map +1 -0
  45. package/dist/extension/runtime-host.js +2 -0
  46. package/dist/extension/runtime-host.js.map +1 -0
  47. package/dist/external/external.plugin.d.ts +7 -0
  48. package/dist/external/external.plugin.d.ts.map +1 -0
  49. package/dist/external/external.plugin.js +44 -0
  50. package/dist/external/external.plugin.js.map +1 -0
  51. package/dist/external/index.d.ts +8 -0
  52. package/dist/external/index.d.ts.map +1 -0
  53. package/dist/external/index.js +8 -0
  54. package/dist/external/index.js.map +1 -0
  55. package/dist/external/pi/bootstrap.d.ts +34 -0
  56. package/dist/external/pi/bootstrap.d.ts.map +1 -0
  57. package/dist/external/pi/bootstrap.js +238 -0
  58. package/dist/external/pi/bootstrap.js.map +1 -0
  59. package/dist/external/pi/guide.d.ts +3 -0
  60. package/dist/external/pi/guide.d.ts.map +1 -0
  61. package/dist/external/pi/guide.js +33 -0
  62. package/dist/external/pi/guide.js.map +1 -0
  63. package/dist/external/pi/index.d.ts +162 -0
  64. package/dist/external/pi/index.d.ts.map +1 -0
  65. package/dist/external/pi/index.js +7 -0
  66. package/dist/external/pi/index.js.map +1 -0
  67. package/dist/external/pi/installer.d.ts +19 -0
  68. package/dist/external/pi/installer.d.ts.map +1 -0
  69. package/dist/external/pi/installer.descriptor.d.ts +373 -0
  70. package/dist/external/pi/installer.descriptor.d.ts.map +1 -0
  71. package/dist/external/pi/installer.descriptor.js +43 -0
  72. package/dist/external/pi/installer.descriptor.js.map +1 -0
  73. package/dist/external/pi/installer.js +82 -0
  74. package/dist/external/pi/installer.js.map +1 -0
  75. package/dist/external/pi/installers/errors.d.ts +16 -0
  76. package/dist/external/pi/installers/errors.d.ts.map +1 -0
  77. package/dist/external/pi/installers/errors.js +15 -0
  78. package/dist/external/pi/installers/errors.js.map +1 -0
  79. package/dist/external/pi/installers/extension.d.ts +16 -0
  80. package/dist/external/pi/installers/extension.d.ts.map +1 -0
  81. package/dist/external/pi/installers/extension.js +292 -0
  82. package/dist/external/pi/installers/extension.js.map +1 -0
  83. package/dist/external/pi/installers/plan.d.ts +29 -0
  84. package/dist/external/pi/installers/plan.d.ts.map +1 -0
  85. package/dist/external/pi/installers/plan.js +391 -0
  86. package/dist/external/pi/installers/plan.js.map +1 -0
  87. package/dist/external/pi/installers/transaction.d.ts +5 -0
  88. package/dist/external/pi/installers/transaction.d.ts.map +1 -0
  89. package/dist/external/pi/installers/transaction.js +66 -0
  90. package/dist/external/pi/installers/transaction.js.map +1 -0
  91. package/dist/external/pi/manifest.d.ts +6 -0
  92. package/dist/external/pi/manifest.d.ts.map +1 -0
  93. package/dist/external/pi/manifest.js +91 -0
  94. package/dist/external/pi/manifest.js.map +1 -0
  95. package/dist/external/pi-presets.d.ts +817 -0
  96. package/dist/external/pi-presets.d.ts.map +1 -0
  97. package/dist/external/pi-presets.js +75 -0
  98. package/dist/external/pi-presets.js.map +1 -0
  99. package/dist/harness/constants.d.ts +46 -0
  100. package/dist/harness/constants.d.ts.map +1 -0
  101. package/dist/harness/constants.js +52 -0
  102. package/dist/harness/constants.js.map +1 -0
  103. package/dist/harness/identity.d.ts +29 -0
  104. package/dist/harness/identity.d.ts.map +1 -0
  105. package/dist/harness/identity.js +40 -0
  106. package/dist/harness/identity.js.map +1 -0
  107. package/dist/harness/index.d.ts +19 -0
  108. package/dist/harness/index.d.ts.map +1 -0
  109. package/dist/harness/index.js +18 -0
  110. package/dist/harness/index.js.map +1 -0
  111. package/dist/harness/managed-block.d.ts +20 -0
  112. package/dist/harness/managed-block.d.ts.map +1 -0
  113. package/dist/harness/managed-block.js +23 -0
  114. package/dist/harness/managed-block.js.map +1 -0
  115. package/dist/harness/pi-naming.d.ts +32 -0
  116. package/dist/harness/pi-naming.d.ts.map +1 -0
  117. package/dist/harness/pi-naming.js +110 -0
  118. package/dist/harness/pi-naming.js.map +1 -0
  119. package/dist/harness/preflight.d.ts +5 -0
  120. package/dist/harness/preflight.d.ts.map +1 -0
  121. package/dist/harness/preflight.js +163 -0
  122. package/dist/harness/preflight.js.map +1 -0
  123. package/dist/harness/prompt.d.ts +14 -0
  124. package/dist/harness/prompt.d.ts.map +1 -0
  125. package/dist/harness/prompt.js +15 -0
  126. package/dist/harness/prompt.js.map +1 -0
  127. package/dist/harness/runtime.d.ts +137 -0
  128. package/dist/harness/runtime.d.ts.map +1 -0
  129. package/dist/harness/runtime.js +53 -0
  130. package/dist/harness/runtime.js.map +1 -0
  131. package/dist/harness/scope.d.ts +11 -0
  132. package/dist/harness/scope.d.ts.map +1 -0
  133. package/dist/harness/scope.js +47 -0
  134. package/dist/harness/scope.js.map +1 -0
  135. package/dist/harness/themes.d.ts +30 -0
  136. package/dist/harness/themes.d.ts.map +1 -0
  137. package/dist/harness/themes.js +225 -0
  138. package/dist/harness/themes.js.map +1 -0
  139. package/dist/index.d.ts +2 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +2 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/schemas/extension-api.d.ts +102 -0
  144. package/dist/schemas/extension-api.d.ts.map +1 -0
  145. package/dist/schemas/extension-api.js +2 -0
  146. package/dist/schemas/extension-api.js.map +1 -0
  147. package/dist/schemas/extension-host.d.ts +11 -0
  148. package/dist/schemas/extension-host.d.ts.map +1 -0
  149. package/dist/schemas/extension-host.js +12 -0
  150. package/dist/schemas/extension-host.js.map +1 -0
  151. package/dist/schemas/extension.d.ts +193 -0
  152. package/dist/schemas/extension.d.ts.map +1 -0
  153. package/dist/schemas/extension.js +82 -0
  154. package/dist/schemas/extension.js.map +1 -0
  155. package/dist/schemas/installer.d.ts +872 -0
  156. package/dist/schemas/installer.d.ts.map +1 -0
  157. package/dist/schemas/installer.js +138 -0
  158. package/dist/schemas/installer.js.map +1 -0
  159. package/dist/themes/vibes-dark.json +63 -0
  160. package/dist/themes/vibes-high-contrast.json +63 -0
  161. package/dist/themes/vibes-light.json +63 -0
  162. package/package.json +110 -4
  163. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/extension/approvals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { VibesAgentHost } from '@vibesdotdev/external/consumer/node/harness';
2
+ import type { PiRuntimeHostOptions } from './runtime-host.ts';
3
+ export declare function piRuntimeScope(workspaceRoot: string): import("@vibesdotdev/external/harness").AgentHostScope;
4
+ /**
5
+ * Validate the root the embedding DECLARED (the Node host channel owns the
6
+ * validation; no filesystem search occurs). Pi is never the process a shim
7
+ * channel names, so the environment is never root authority: a
8
+ * `VIBES_HOST_ROOT` Pi inherited names a parent's graph.
9
+ */
10
+ export declare function resolvePiHostRoot(cwd: string, hostRoot: string | undefined): string;
11
+ /** The graph the native extension actually loaded: R by the realpath of the kernel it imported. */
12
+ export declare function loadedPiHostRoot(): string;
13
+ export declare function bootPiRuntime(options: PiRuntimeHostOptions): Promise<VibesAgentHost>;
14
+ /** Capture the native host before Pi supplies the session's workspace. */
15
+ export declare function capturePiEnvironment(): {
16
+ [x: string]: string;
17
+ };
18
+ //# sourceMappingURL=boot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/extension/boot.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,0DAA6C;AAEjG;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQnF;AAED,mGAAmG;AACnG,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAKD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuF1F;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB;;EAOnC"}
@@ -0,0 +1,129 @@
1
+ /** Pi's Node composition root. Feature behavior receives the resulting runtime. */
2
+ import { createRuntimePlugin, CapabilityError, getRuntimeStdioOutputPlane, settle, SHIM_CHANNEL_KEYS } from '@vibesdotdev/kernel';
3
+ import { NodeEnvironment, createRuntimeEnvironmentNodePlugin, NodeRuntimeStdio, resolveLoadedHostRoot } from '@vibesdotdev/host-node/environment';
4
+ import { FILE_OUTPUT_ID, loggingPlugin, OutputDescriptorSchema } from '@vibesdotdev/logging';
5
+ import { getVibesGlobalLogDir, resolveLogPathFromDescriptorPath } from '@vibesdotdev/logging/paths';
6
+ import { agentHostScope, VibesAgentHost } from '@vibesdotdev/external/consumer/node/harness';
7
+ import { PiDiagnosticCompletionSchema } from "../schemas/extension-host.js";
8
+ export function piRuntimeScope(workspaceRoot) { return agentHostScope({ workspaceRoot }); }
9
+ /**
10
+ * Validate the root the embedding DECLARED (the Node host channel owns the
11
+ * validation; no filesystem search occurs). Pi is never the process a shim
12
+ * channel names, so the environment is never root authority: a
13
+ * `VIBES_HOST_ROOT` Pi inherited names a parent's graph.
14
+ */
15
+ export function resolvePiHostRoot(cwd, hostRoot) {
16
+ if (!hostRoot?.trim())
17
+ throw new CapabilityError('Pi requires a declared framework host root.', 'UNAVAILABLE', {
18
+ reason: 'pi-host-root-required',
19
+ recoveryHint: 'Declare hostRoot (the directory whose node_modules supplies the framework); an inherited VIBES_HOST_ROOT is not a declaration.'
20
+ });
21
+ const root = new NodeEnvironment({ scope: piRuntimeScope(cwd), host: { root: hostRoot } }).hostIdentity().hostRoot;
22
+ if (!root)
23
+ throw new CapabilityError('Pi requires a declared framework host root.', 'UNAVAILABLE', { reason: 'pi-host-root-required' });
24
+ return root;
25
+ }
26
+ /** The graph the native extension actually loaded: R by the realpath of the kernel it imported. */
27
+ export function loadedPiHostRoot() {
28
+ return resolveLoadedHostRoot({ moduleUrl: import.meta.url, packageName: '@vibesdotdev/kernel', loadedEntryUrl: import.meta.resolve('@vibesdotdev/kernel') });
29
+ }
30
+ /** A parent's shim channel names the parent's graph; Pi declares its own R and publishes none of it on. */
31
+ const SHIM_CHANNEL_KEY_SET = new Set(Object.values(SHIM_CHANNEL_KEYS));
32
+ export async function bootPiRuntime(options) {
33
+ const root = resolvePiHostRoot(options.cwd, options.hostRoot);
34
+ let capture;
35
+ const writes = new Set();
36
+ const failures = [];
37
+ const streams = NodeRuntimeStdio.forwardingTextStreams();
38
+ const node = createRuntimeEnvironmentNodePlugin({
39
+ scope: piRuntimeScope(options.cwd),
40
+ host: { root, version: options.version, spawnEnv: Object.fromEntries(Object.entries(options.hostEnv).flatMap(([key, value]) => value === undefined || SHIM_CHANNEL_KEY_SET.has(key) ? [] : [[key, value]])) },
41
+ textStreams: {
42
+ ...streams,
43
+ stderr: {
44
+ write(chunk, encodingOrCallback, callback) {
45
+ const completion = PiDiagnosticCompletionSchema.safeParse(encodingOrCallback);
46
+ const complete = completion.success ? completion.data : callback;
47
+ const text = chunk instanceof Uint8Array ? new TextDecoder().decode(chunk) : chunk;
48
+ if (text.length === 0) {
49
+ complete?.();
50
+ return true;
51
+ }
52
+ if (!capture)
53
+ throw new CapabilityError('Pi diagnostics are not ready.', 'UNAVAILABLE', { reason: 'pi-diagnostics-not-ready' });
54
+ const selected = capture;
55
+ const line = `[${new Date().toISOString()}] [stderr] ${text.endsWith('\n') ? text : `${text}\n`}`;
56
+ const write = settle(() => selected.writeLine(line));
57
+ writes.add(write);
58
+ void write.then(result => {
59
+ writes.delete(write);
60
+ if (result.ok)
61
+ complete?.();
62
+ else {
63
+ const failure = new CapabilityError('Pi diagnostics write failed.', 'UNAVAILABLE', { reason: 'pi-diagnostics-write-failed', cause: result.cause });
64
+ failures.push(failure);
65
+ complete?.(failure);
66
+ }
67
+ });
68
+ return true;
69
+ }
70
+ }
71
+ }
72
+ });
73
+ const environment = createRuntimePlugin({
74
+ id: 'integrations-pi.environment',
75
+ async onRegister(runtime) {
76
+ await runtime.registerPlugin(node);
77
+ await runtime.registerPlugin(loggingPlugin);
78
+ await runtime.registerPlugin(createRuntimePlugin({
79
+ id: 'integrations-pi.diagnostics',
80
+ async onRegister(owner) {
81
+ const path = resolveLogPathFromDescriptorPath('logs/pi-diagnostics.log', 'global', getVibesGlobalLogDir(owner));
82
+ if (!path)
83
+ throw new CapabilityError('Pi diagnostics log path is invalid.', 'INVALID_INPUT', { reason: 'pi-diagnostics-path-invalid' });
84
+ const backend = await owner.query('logging/output').withId(FILE_OUTPUT_ID).resolve();
85
+ capture = await backend.create(OutputDescriptorSchema.parse({
86
+ kind: 'logging/output',
87
+ id: 'pi-diagnostics',
88
+ name: 'Pi Diagnostics',
89
+ storage: 'file',
90
+ format: 'raw',
91
+ path,
92
+ buffering: { enabled: false }
93
+ }), { runtime: owner });
94
+ (await getRuntimeStdioOutputPlane(owner)).trackOutput({ stripSgr: false });
95
+ },
96
+ async onDispose() {
97
+ await Promise.all(writes);
98
+ await capture?.close();
99
+ capture = undefined;
100
+ if (failures.length)
101
+ throw new AggregateError(failures, 'Pi diagnostics failed.');
102
+ }
103
+ }));
104
+ }
105
+ });
106
+ return VibesAgentHost.boot({
107
+ environment, root, workspaceRoot: options.cwd, binding: 'owned',
108
+ composition: {
109
+ floor: [
110
+ async () => (await import('@vibesdotdev/kernel/client')).runtimeClientPlugin,
111
+ async () => (await import('@vibesdotdev/storage/plugin')).default,
112
+ async () => (await import('@vibesdotdev/config/plugin')).default,
113
+ async () => (await import('@vibesdotdev/external/consumer/node/harness')).agentHostSettingsPlugin,
114
+ async () => (await import('@vibesdotdev/cli/plugin')).default
115
+ ],
116
+ config: { 'external.agent-host': { commandCaptureDelivery: 'capture' } }
117
+ }
118
+ });
119
+ }
120
+ /** Capture the native host before Pi supplies the session's workspace. */
121
+ export function capturePiEnvironment() {
122
+ const environment = new NodeEnvironment({ scope: {
123
+ surface: 'agent', hardware: 'consumer', purpose: 'projection', lifecycle: 'persistent',
124
+ hosting: { mode: 'local', owner: 'consumer', venue: 'user-device' },
125
+ capabilities: { interactiveSession: true }
126
+ } });
127
+ return { ...environment.getEnvSnapshot() };
128
+ }
129
+ //# sourceMappingURL=boot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../src/extension/boot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Pi chrome that a Vibes install can own: title, header, status, and a
3
+ * confirm gate on mutating tool calls. Pi remains the TUI; this is brand and
4
+ * safety on top of it, not a Studio shell.
5
+ */
6
+ import type { PiRuntimeHost } from './runtime-host.ts';
7
+ import { ApprovalMemory, type ApprovalPosture } from './approvals.ts';
8
+ import type { PiHostUi, PiToolCallEvent } from '../schemas/extension.ts';
9
+ export type { PiHostTheme, PiHostUi, PiHostContext, PiToolCallEvent } from '../schemas/extension.ts';
10
+ export declare function isMutatingPiToolCall(event: PiToolCallEvent): boolean;
11
+ export declare function applyVibesPiChrome(ui: PiHostUi | undefined): void;
12
+ export type ConfirmMutatingToolOptions = {
13
+ memory?: ApprovalMemory;
14
+ host?: PiRuntimeHost;
15
+ cwd?: string;
16
+ workspaceRoot?: string;
17
+ posture?: ApprovalPosture;
18
+ };
19
+ export declare function confirmMutatingTool(event: PiToolCallEvent, ui: PiHostUi | undefined, options?: ConfirmMutatingToolOptions | ApprovalMemory): Promise<{
20
+ block?: boolean;
21
+ reason?: string;
22
+ } | void>;
23
+ /**
24
+ * Bind the workspace session this Pi session's tools are attributed to.
25
+ *
26
+ * The bind is a `session` command in the runtime Pi already booted, not a child
27
+ * CLI: `session init` first, `session status` when init declines to create one.
28
+ * A runtime that composes no `session` commands binds nothing and says so in
29
+ * the status line rather than failing the session.
30
+ */
31
+ export declare function bindVibesSession(host: PiRuntimeHost, ui: PiHostUi | undefined, onStatus?: (key: string, value: string | undefined) => void): Promise<string | undefined>;
32
+ export declare function vibesThemeDiscoverPath(cwd: string, host: PiRuntimeHost): Promise<string>;
33
+ //# sourceMappingURL=chrome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/extension/chrome.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAgB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpF,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAoBrG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAcjE;AAED,MAAM,MAAM,0BAA0B,GAAG;IACxC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,wBAAsB,mBAAmB,CACxC,KAAK,EAAE,eAAe,EACtB,EAAE,EAAE,QAAQ,GAAG,SAAS,EACxB,OAAO,CAAC,EAAE,0BAA0B,GAAG,cAAc,GACnD,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA+EtD;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,QAAQ,GAAG,SAAS,EACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACzD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqB7B;AAOD,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9F"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Pi chrome that a Vibes install can own: title, header, status, and a
3
+ * confirm gate on mutating tool calls. Pi remains the TUI; this is brand and
4
+ * safety on top of it, not a Studio shell.
5
+ */
6
+ import { getRuntimePath } from '@vibesdotdev/paths';
7
+ import { getVibesClient } from '@vibesdotdev/kernel/client';
8
+ import { CapabilityError } from '@vibesdotdev/kernel';
9
+ import { PiActionInputSchema, PiSessionResultSchema, PiJsonTextSchema } from "../schemas/extension.js";
10
+ import { Text } from '@earendil-works/pi-tui';
11
+ import { PI_THEMES_DIR } from "../harness/themes.js";
12
+ import { agentHostCommands } from '@vibesdotdev/external/consumer/node/harness';
13
+ import { ApprovalMemory, dangerReason } from "./approvals.js";
14
+ const MUTATING_ACTIONS = new Set([
15
+ 'write',
16
+ 'edit',
17
+ 'create',
18
+ 'update',
19
+ 'delete',
20
+ 'destroy',
21
+ 'remove',
22
+ 'exec',
23
+ 'run',
24
+ 'install',
25
+ 'deploy',
26
+ 'publish',
27
+ 'apply'
28
+ ]);
29
+ const MUTATING_TOOLS = new Set(['bash', 'edit', 'write', 'workspace_exec', 'workspace_destroy']);
30
+ export function isMutatingPiToolCall(event) {
31
+ if (MUTATING_TOOLS.has(event.toolName))
32
+ return true;
33
+ const { action } = PiActionInputSchema.parse(event.input ?? {});
34
+ return action !== undefined && MUTATING_ACTIONS.has(action);
35
+ }
36
+ export function applyVibesPiChrome(ui) {
37
+ if (!ui)
38
+ return;
39
+ ui.setTitle?.('Vibes');
40
+ ui.setHiddenThinkingLabel?.('thinking');
41
+ ui.setStatus?.('vibes', 'vibes');
42
+ if (ui.setHeader) {
43
+ ui.setHeader((_tui, theme) => {
44
+ const mark = theme.bold(theme.fg('accent', 'Vibes'));
45
+ const rest = theme.fg('muted', ' live tools · isolated host');
46
+ return new Text(mark + rest, 0, 0);
47
+ });
48
+ return;
49
+ }
50
+ ui.setWidget?.('vibes-brand', ['Vibes live tools · isolated host']);
51
+ }
52
+ export async function confirmMutatingTool(event, ui, options) {
53
+ const opts = options instanceof ApprovalMemory ? { memory: options } : (options ?? {});
54
+ const posture = opts.posture ?? 'smart';
55
+ if (posture === 'off')
56
+ return;
57
+ const cwd = opts.cwd ?? opts.memory?.cwd;
58
+ if (!cwd || !opts.host)
59
+ throw new CapabilityError('Approval requires the session runtime.', 'UNAVAILABLE', { reason: 'pi-approval-runtime-required' });
60
+ const paths = await getRuntimePath(opts.host.runtime);
61
+ const tools = await getVibesClient('tools', opts.host.runtime);
62
+ if (!tools.approval.requiresApproval(event.toolName, posture === 'strict' ? 'always-ask' : 'auto-approve-safe', { callRequiresApproval: isMutatingPiToolCall(event) }))
63
+ return;
64
+ const action = PiActionInputSchema.parse(event.input ?? {}).action ?? event.toolName;
65
+ const danger = dangerReason(event.toolName, action, event.input, cwd, opts.workspaceRoot, paths);
66
+ if (!danger && posture !== 'strict' && await opts.memory?.isApproved(event.toolName, action)) {
67
+ return;
68
+ }
69
+ if (!ui?.select && !ui?.confirm)
70
+ return { block: true, reason: 'pi-approval-ui-unavailable' };
71
+ if (ui.select) {
72
+ const optAllowOnce = 'Allow once';
73
+ const optDeny = 'Deny';
74
+ if (danger || posture === 'strict') {
75
+ const promptTitle = danger
76
+ ? `Vibes approval [DANGER: ${danger}]: allow ${action} via ${event.toolName}?`
77
+ : `Vibes approval: allow ${action} via ${event.toolName}?`;
78
+ const choice = await ui.select(promptTitle, [optAllowOnce, optDeny]);
79
+ if (choice !== optAllowOnce) {
80
+ return { block: true, reason: 'Blocked by Vibes approval in Pi' };
81
+ }
82
+ return;
83
+ }
84
+ const optSessionTool = `Always allow "${event.toolName}" for this session`;
85
+ const optWorkspaceTool = `Always allow "${event.toolName}" in this workspace`;
86
+ const optSessionAll = 'Always allow all tools for this session';
87
+ const optWorkspaceAll = 'Always allow all tools in this workspace';
88
+ const promptTitle = `Vibes approval: allow ${action} via ${event.toolName}?`;
89
+ const choice = await ui.select(promptTitle, [
90
+ optAllowOnce,
91
+ optSessionTool,
92
+ optWorkspaceTool,
93
+ optSessionAll,
94
+ optWorkspaceAll,
95
+ optDeny
96
+ ]);
97
+ if (!choice || choice === optDeny) {
98
+ return { block: true, reason: 'Blocked by Vibes approval in Pi' };
99
+ }
100
+ if (choice === optSessionTool) {
101
+ await opts.memory?.grant('session', event.toolName);
102
+ ui.notify?.(`Approved ${event.toolName} for this session`, 'info');
103
+ }
104
+ else if (choice === optWorkspaceTool) {
105
+ await opts.memory?.grant('workspace', event.toolName);
106
+ ui.notify?.('Approved tool in this workspace', 'info');
107
+ }
108
+ else if (choice === optSessionAll) {
109
+ await opts.memory?.grant('session', '*');
110
+ ui.notify?.('Approved all tools for this session', 'info');
111
+ }
112
+ else if (choice === optWorkspaceAll) {
113
+ await opts.memory?.grant('workspace', '*');
114
+ ui.notify?.('Approved all tools in this workspace', 'info');
115
+ }
116
+ return;
117
+ }
118
+ if (ui.confirm) {
119
+ const title = danger ? `Vibes approval [DANGER: ${danger}]` : 'Vibes approval';
120
+ const ok = await ui.confirm(title, 'Allow ' + action + ' via ' + event.toolName + '?');
121
+ if (!ok)
122
+ return { block: true, reason: 'Blocked by Vibes approval in Pi' };
123
+ if (!danger && posture !== 'strict') {
124
+ await opts.memory?.grant('session', event.toolName);
125
+ }
126
+ }
127
+ }
128
+ /**
129
+ * Bind the workspace session this Pi session's tools are attributed to.
130
+ *
131
+ * The bind is a `session` command in the runtime Pi already booted, not a child
132
+ * CLI: `session init` first, `session status` when init declines to create one.
133
+ * A runtime that composes no `session` commands binds nothing and says so in
134
+ * the status line rather than failing the session.
135
+ */
136
+ export async function bindVibesSession(host, ui, onStatus) {
137
+ const status = onStatus ?? ((key, value) => ui?.setStatus?.(key, value));
138
+ const commands = agentHostCommands(host.commands());
139
+ const byPath = new Map(commands.map((command) => [command.name, command]));
140
+ const read = async (path) => {
141
+ const command = byPath.get(path);
142
+ if (!command)
143
+ return { exitCode: 1 };
144
+ const result = await host.runCommand(command.descriptor, {}, { format: 'json' });
145
+ return { exitCode: result.exitCode, json: result.json ?? PiJsonTextSchema.safeParse(result.stdout).data };
146
+ };
147
+ let result = await read('session init');
148
+ if (result.exitCode !== 0)
149
+ result = await read('session status');
150
+ if (result.exitCode === 0) {
151
+ const sessionId = sessionIdOf(result.json);
152
+ if (sessionId) {
153
+ status('vibes', 'vibes · session');
154
+ return sessionId;
155
+ }
156
+ }
157
+ status('vibes', 'vibes');
158
+ return undefined;
159
+ }
160
+ function sessionIdOf(value) {
161
+ const result = PiSessionResultSchema.safeParse(value);
162
+ return result.success ? result.data.session?.id ?? result.data.id : undefined;
163
+ }
164
+ export async function vibesThemeDiscoverPath(cwd, host) {
165
+ return (await getRuntimePath(host.runtime)).join(cwd, '.pi', PI_THEMES_DIR);
166
+ }
167
+ //# sourceMappingURL=chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/extension/chrome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Pi slash commands, derived from the runtime.
3
+ *
4
+ * There is no command table here. A command Pi offers is a `cli/command`
5
+ * descriptor in the runtime Pi booted, so the operator sees exactly the
6
+ * commands `vibes` offers in that workspace — including any a plugin
7
+ * contributed — and a command that stops being registered stops being offered.
8
+ *
9
+ * Only the host's own mechanics live here: taking Pi's argument string, running
10
+ * the command in the runtime, and showing what it wrote.
11
+ */
12
+ import { type AgentHostCommand } from '@vibesdotdev/external/consumer/node/harness';
13
+ import type { PiRuntimeHost } from './runtime-host.ts';
14
+ /** A command as Pi registers it. */
15
+ export type PiCommandSpec = {
16
+ name: string;
17
+ description: string;
18
+ /** The runtime command this name runs. */
19
+ command: AgentHostCommand;
20
+ };
21
+ export type PiHostUi = {
22
+ notify?(message: string, type?: 'info' | 'warning' | 'error'): void;
23
+ };
24
+ /**
25
+ * The commands `host` offers, in the runtime's own registration order.
26
+ *
27
+ * Pi command names are single words, so a two-word command path (`session init`)
28
+ * is projected to one (`vibes-session-init`): a name Pi can hold, derived from
29
+ * the descriptor's own path rather than invented per command.
30
+ */
31
+ export declare function piCommandSpecs(host: PiRuntimeHost): PiCommandSpec[];
32
+ /** Provider-safe single-word projection of a command path. */
33
+ export declare function toPiCommandName(path: string): string;
34
+ /** Long output is clipped for a notification; the command itself is never truncated. */
35
+ export declare function clipCommandOutput(text: string, max?: number): string;
36
+ /**
37
+ * Run one Pi slash command: parse Pi's argument string against the descriptor's
38
+ * own declaration, execute in the runtime, and report what the command wrote.
39
+ */
40
+ export declare function runVibesPiCommand(host: PiRuntimeHost, spec: PiCommandSpec, ui: PiHostUi | undefined, rawArgs?: string, signal?: AbortSignal): Promise<void>;
41
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/extension/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC1H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,oCAAoC;AACpC,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACtB,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;CACpE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,CAMnE;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAIjE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,QAAQ,GAAG,SAAS,EACxB,OAAO,SAAK,EACZ,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Pi slash commands, derived from the runtime.
3
+ *
4
+ * There is no command table here. A command Pi offers is a `cli/command`
5
+ * descriptor in the runtime Pi booted, so the operator sees exactly the
6
+ * commands `vibes` offers in that workspace — including any a plugin
7
+ * contributed — and a command that stops being registered stops being offered.
8
+ *
9
+ * Only the host's own mechanics live here: taking Pi's argument string, running
10
+ * the command in the runtime, and showing what it wrote.
11
+ */
12
+ import { agentHostCommands, commandOutputText } from '@vibesdotdev/external/consumer/node/harness';
13
+ /**
14
+ * The commands `host` offers, in the runtime's own registration order.
15
+ *
16
+ * Pi command names are single words, so a two-word command path (`session init`)
17
+ * is projected to one (`vibes-session-init`): a name Pi can hold, derived from
18
+ * the descriptor's own path rather than invented per command.
19
+ */
20
+ export function piCommandSpecs(host) {
21
+ return agentHostCommands(host.commands()).map((command) => ({
22
+ name: toPiCommandName(command.name),
23
+ description: command.description,
24
+ command
25
+ }));
26
+ }
27
+ /** Provider-safe single-word projection of a command path. */
28
+ export function toPiCommandName(path) {
29
+ return `vibes-${path.trim().replaceAll(' ', '-').replaceAll('.', '-')}`;
30
+ }
31
+ /** Long output is clipped for a notification; the command itself is never truncated. */
32
+ export function clipCommandOutput(text, max = 800) {
33
+ const trimmed = text.replace(/\s+$/g, '');
34
+ if (trimmed.length <= max)
35
+ return trimmed;
36
+ return `${trimmed.slice(0, max).trimEnd()}\n…`;
37
+ }
38
+ /**
39
+ * Run one Pi slash command: parse Pi's argument string against the descriptor's
40
+ * own declaration, execute in the runtime, and report what the command wrote.
41
+ */
42
+ export async function runVibesPiCommand(host, spec, ui, rawArgs = '', signal) {
43
+ const result = await host.runCommand(spec.command.descriptor, spec.command.parse(rawArgs), {}, { signal });
44
+ const body = clipCommandOutput(commandOutputText(result));
45
+ ui?.notify?.(body, result.exitCode === 0 ? 'info' : 'error');
46
+ }
47
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/extension/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAyB,MAAM,6CAA6C,CAAC;AAe1H;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAmB;IACjD,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;QACnC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO;KACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IAC1C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,IAAmB,EACnB,IAAmB,EACnB,EAAwB,EACxB,OAAO,GAAG,EAAE,EACZ,MAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PiExtensionAPI } from '../schemas/extension-api.ts';
2
+ /**
3
+ * The native entry declares the graph this extension loaded as R, resolved at
4
+ * boot so a refusal (a linked developer tree) surfaces as the activation's
5
+ * failure; an inherited `VIBES_HOST_ROOT` is never adopted.
6
+ */
7
+ export default function vibesPiEntry(pi: PiExtensionAPI): Promise<void>;
8
+ export * from './index.ts';
9
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/extension/entry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE;;;;GAIG;AACH,wBAA8B,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5E;AACD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** Native Pi entry. Environment capture is provided by the Node boot owner. */
2
+ import { createVibesPiExtension } from "./index.js";
3
+ import { bootPiRuntime, capturePiEnvironment, loadedPiHostRoot } from "./boot.js";
4
+ /**
5
+ * The native entry declares the graph this extension loaded as R, resolved at
6
+ * boot so a refusal (a linked developer tree) surfaces as the activation's
7
+ * failure; an inherited `VIBES_HOST_ROOT` is never adopted.
8
+ */
9
+ export default async function vibesPiEntry(pi) {
10
+ await createVibesPiExtension({
11
+ hostEnv: capturePiEnvironment(), enableKernelTool: true,
12
+ bootRuntime: (options) => bootPiRuntime({ ...options, hostRoot: loadedPiHostRoot() })
13
+ })(pi);
14
+ }
15
+ export * from "./index.js";
16
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/extension/entry.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElF;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CAAC,EAAkB;IAC5D,MAAM,sBAAsB,CAAC;QAC5B,OAAO,EAAE,oBAAoB,EAAE,EAAE,gBAAgB,EAAC,IAAI;QACtD,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAC,CAAC;KACnF,CAAC,CAAC,EAAE,CAAC,CAAC;AACR,CAAC;AACD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Runtime event forwarding: the booted runtime's hook buses surface to the
3
+ * host the agent is working in. Only events that change what the agent should
4
+ * do next are forwarded — signal updates, check completions, git state — as
5
+ * one-line host notifications, never as raw payload dumps.
6
+ */
7
+ import type { VibesRuntime } from '@vibesdotdev/kernel';
8
+ /** The notification surface a host offers: one line, a level, nothing else. */
9
+ export type HostNotify = (message: string, type?: 'info' | 'warning' | 'error') => void;
10
+ /**
11
+ * Subscribe to the runtime's hook buses and forward state changes as host
12
+ * notifications. Returns the unsubscribe functions; the caller stops them on
13
+ * disposal. Handlers never throw into the runtime (the hook bus isolates
14
+ * them), and a host that offers no notify surface subscribes to nothing.
15
+ */
16
+ export declare function forwardRuntimeEvents(runtime: VibesRuntime, notify: HostNotify | undefined): Array<() => void>;
17
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/extension/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC;AAiBxF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CA6B7G"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Runtime event forwarding: the booted runtime's hook buses surface to the
3
+ * host the agent is working in. Only events that change what the agent should
4
+ * do next are forwarded — signal updates, check completions, git state — as
5
+ * one-line host notifications, never as raw payload dumps.
6
+ */
7
+ import { PiSignalUpdatedSchema, PiCheckCompletedSchema, PiBranchChangedSchema } from "../schemas/extension.js";
8
+ /**
9
+ * Subscribe to the runtime's hook buses and forward state changes as host
10
+ * notifications. Returns the unsubscribe functions; the caller stops them on
11
+ * disposal. Handlers never throw into the runtime (the hook bus isolates
12
+ * them), and a host that offers no notify surface subscribes to nothing.
13
+ */
14
+ export function forwardRuntimeEvents(runtime, notify) {
15
+ if (!notify)
16
+ return [];
17
+ const stops = [];
18
+ // Workspace signals: a bucket changed (check findings, diagnostics, codegraph)
19
+ const workspace = runtime.hooks('workspace');
20
+ stops.push(workspace.on('signalUpdated', (input) => {
21
+ const payload = PiSignalUpdatedSchema.parse(input);
22
+ if (payload.keys.length === 0)
23
+ return;
24
+ const count = payload.keys.length;
25
+ const noun = payload.keys.length === 1 ? 'entry' : 'entries';
26
+ notify(`vibes: ${payload.bucket} signal updated (${count} ${noun})`, 'info');
27
+ }));
28
+ // Check completions: a check passed or failed
29
+ const checks = runtime.hooks('runbooks.check');
30
+ stops.push(checks.on('completed', (input) => {
31
+ const payload = PiCheckCompletedSchema.parse(input);
32
+ notify(`vibes: check ${payload.check} ${payload.status}`, payload.status === 'passed' ? 'info' : 'warning');
33
+ }));
34
+ // Git branch changes: the workspace moved branches
35
+ const git = runtime.hooks('git');
36
+ stops.push(git.on('branchChanged', (input) => {
37
+ const payload = PiBranchChangedSchema.parse(input);
38
+ notify(`vibes: branch → ${payload.currentBranch}`, 'info');
39
+ }));
40
+ return stops;
41
+ }
42
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/extension/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAoB/G;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB,EAAE,MAA8B;IACzF,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,+EAA+E;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAA0C,WAAW,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QAClD,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,MAAM,CAAC,UAAU,OAAO,CAAC,MAAM,oBAAoB,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC,CAAC;IAEL,8CAA8C;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAuC,gBAAgB,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC,CAAC;IAEL,mDAAmD;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAA6C,KAAK,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,mBAAmB,OAAO,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC,CAAC;IAEL,OAAO,KAAK,CAAC;AACd,CAAC"}