@h-rig/contracts 0.0.0-e2e-live.20260630085347

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 (200) hide show
  1. package/README.md +14 -0
  2. package/dist/index.cjs +3442 -0
  3. package/dist/index.mjs +3401 -0
  4. package/dist/src/agent-roles.d.ts +8 -0
  5. package/dist/src/agent-roles.js +1 -0
  6. package/dist/src/artifact.d.ts +13 -0
  7. package/dist/src/artifact.js +56 -0
  8. package/dist/src/baseSchemas.d.ts +63 -0
  9. package/dist/src/baseSchemas.js +72 -0
  10. package/dist/src/blocker-classifier.d.ts +21 -0
  11. package/dist/src/blocker-classifier.js +13 -0
  12. package/dist/src/browser.d.ts +80 -0
  13. package/dist/src/browser.js +13 -0
  14. package/dist/src/capability-id.d.ts +22 -0
  15. package/dist/src/capability-id.js +8 -0
  16. package/dist/src/cli-output.d.ts +348 -0
  17. package/dist/src/cli-output.js +190 -0
  18. package/dist/src/cli-runner.d.ts +43 -0
  19. package/dist/src/cli-runner.js +13 -0
  20. package/dist/src/cockpit.d.ts +58 -0
  21. package/dist/src/cockpit.js +13 -0
  22. package/dist/src/collab-session-viewer.d.ts +36 -0
  23. package/dist/src/collab-session-viewer.js +13 -0
  24. package/dist/src/config.d.ts +553 -0
  25. package/dist/src/config.js +822 -0
  26. package/dist/src/control-plane-types.d.ts +323 -0
  27. package/dist/src/control-plane-types.js +13 -0
  28. package/dist/src/conversation.d.ts +50 -0
  29. package/dist/src/conversation.js +98 -0
  30. package/dist/src/dependency-preflight.d.ts +43 -0
  31. package/dist/src/dependency-preflight.js +13 -0
  32. package/dist/src/docs-drift.d.ts +10 -0
  33. package/dist/src/docs-drift.js +12 -0
  34. package/dist/src/doctor.d.ts +90 -0
  35. package/dist/src/doctor.js +13 -0
  36. package/dist/src/drift.d.ts +28 -0
  37. package/dist/src/drift.js +69 -0
  38. package/dist/src/editor.d.ts +25 -0
  39. package/dist/src/editor.js +58 -0
  40. package/dist/src/errors.d.ts +13 -0
  41. package/dist/src/errors.js +17 -0
  42. package/dist/src/git.d.ts +152 -0
  43. package/dist/src/git.js +196 -0
  44. package/dist/src/github.d.ts +295 -0
  45. package/dist/src/github.js +17 -0
  46. package/dist/src/graph.d.ts +360 -0
  47. package/dist/src/graph.js +229 -0
  48. package/dist/src/guard.d.ts +118 -0
  49. package/dist/src/guard.js +15 -0
  50. package/dist/src/harness-events.d.ts +8 -0
  51. package/dist/src/harness-events.js +1 -0
  52. package/dist/src/harness-profile-state.d.ts +10 -0
  53. package/dist/src/harness-profile-state.js +13 -0
  54. package/dist/src/help-catalog.d.ts +41 -0
  55. package/dist/src/help-catalog.js +13 -0
  56. package/dist/src/host.d.ts +41 -0
  57. package/dist/src/host.js +13 -0
  58. package/dist/src/identity.d.ts +44 -0
  59. package/dist/src/identity.js +1 -0
  60. package/dist/src/index.d.ts +98 -0
  61. package/dist/src/index.js +3401 -0
  62. package/dist/src/isolation.d.ts +213 -0
  63. package/dist/src/isolation.js +13 -0
  64. package/dist/src/kernel.d.ts +200 -0
  65. package/dist/src/kernel.js +261 -0
  66. package/dist/src/keybindings.d.ts +71 -0
  67. package/dist/src/keybindings.js +122 -0
  68. package/dist/src/layout.d.ts +44 -0
  69. package/dist/src/layout.js +8 -0
  70. package/dist/src/lifecycle-capabilities.d.ts +224 -0
  71. package/dist/src/lifecycle-capabilities.js +45 -0
  72. package/dist/src/managed-repos.d.ts +339 -0
  73. package/dist/src/managed-repos.js +37 -0
  74. package/dist/src/memory.d.ts +199 -0
  75. package/dist/src/memory.js +15 -0
  76. package/dist/src/model.d.ts +13 -0
  77. package/dist/src/model.js +9 -0
  78. package/dist/src/native-toolchain.d.ts +46 -0
  79. package/dist/src/native-toolchain.js +13 -0
  80. package/dist/src/notify.d.ts +46 -0
  81. package/dist/src/notify.js +13 -0
  82. package/dist/src/orchestration.d.ts +43 -0
  83. package/dist/src/orchestration.js +98 -0
  84. package/dist/src/panel-protocol.d.ts +17 -0
  85. package/dist/src/panel-protocol.js +10 -0
  86. package/dist/src/pi-session.d.ts +113 -0
  87. package/dist/src/pi-session.js +1 -0
  88. package/dist/src/placement.d.ts +47 -0
  89. package/dist/src/placement.js +13 -0
  90. package/dist/src/planning.d.ts +64 -0
  91. package/dist/src/planning.js +90 -0
  92. package/dist/src/plugin-hooks.d.ts +51 -0
  93. package/dist/src/plugin-hooks.js +386 -0
  94. package/dist/src/plugin.d.ts +476 -0
  95. package/dist/src/plugin.js +384 -0
  96. package/dist/src/policy.d.ts +16 -0
  97. package/dist/src/policy.js +59 -0
  98. package/dist/src/product-entrypoint.d.ts +22 -0
  99. package/dist/src/product-entrypoint.js +13 -0
  100. package/dist/src/project.d.ts +71 -0
  101. package/dist/src/project.js +110 -0
  102. package/dist/src/prompt.d.ts +29 -0
  103. package/dist/src/prompt.js +13 -0
  104. package/dist/src/protocol-version.d.ts +21 -0
  105. package/dist/src/protocol-version.js +6 -0
  106. package/dist/src/provider-instructions.d.ts +41 -0
  107. package/dist/src/provider-instructions.js +13 -0
  108. package/dist/src/provider.d.ts +105 -0
  109. package/dist/src/provider.js +194 -0
  110. package/dist/src/remote-control.d.ts +93 -0
  111. package/dist/src/remote-control.js +26 -0
  112. package/dist/src/remote.d.ts +318 -0
  113. package/dist/src/remote.js +634 -0
  114. package/dist/src/review.d.ts +18 -0
  115. package/dist/src/review.js +61 -0
  116. package/dist/src/rollups.d.ts +41 -0
  117. package/dist/src/rollups.js +70 -0
  118. package/dist/src/run-control.d.ts +164 -0
  119. package/dist/src/run-control.js +13 -0
  120. package/dist/src/run-discovery.d.ts +83 -0
  121. package/dist/src/run-discovery.js +13 -0
  122. package/dist/src/run-dispatch.d.ts +34 -0
  123. package/dist/src/run-dispatch.js +13 -0
  124. package/dist/src/run-identity.d.ts +47 -0
  125. package/dist/src/run-identity.js +13 -0
  126. package/dist/src/run-journal.d.ts +694 -0
  127. package/dist/src/run-journal.js +569 -0
  128. package/dist/src/run-queue.d.ts +36 -0
  129. package/dist/src/run-queue.js +13 -0
  130. package/dist/src/run-read-model.d.ts +200 -0
  131. package/dist/src/run-read-model.js +13 -0
  132. package/dist/src/run-record.d.ts +45 -0
  133. package/dist/src/run-record.js +1 -0
  134. package/dist/src/run-registry-backbone.d.ts +56 -0
  135. package/dist/src/run-registry-backbone.js +13 -0
  136. package/dist/src/run-session-journal.d.ts +154 -0
  137. package/dist/src/run-session-journal.js +87 -0
  138. package/dist/src/run-status.d.ts +10 -0
  139. package/dist/src/run-status.js +27 -0
  140. package/dist/src/run-timeline.d.ts +7 -0
  141. package/dist/src/run-timeline.js +1 -0
  142. package/dist/src/runtime-secrets.d.ts +10 -0
  143. package/dist/src/runtime-secrets.js +13 -0
  144. package/dist/src/runtime-task-context.d.ts +82 -0
  145. package/dist/src/runtime-task-context.js +1 -0
  146. package/dist/src/runtime.d.ts +103 -0
  147. package/dist/src/runtime.js +210 -0
  148. package/dist/src/session-asset-materializer.d.ts +35 -0
  149. package/dist/src/session-asset-materializer.js +13 -0
  150. package/dist/src/session-hook-materializer.d.ts +41 -0
  151. package/dist/src/session-hook-materializer.js +13 -0
  152. package/dist/src/setup.d.ts +154 -0
  153. package/dist/src/setup.js +13 -0
  154. package/dist/src/stage.d.ts +245 -0
  155. package/dist/src/stage.js +169 -0
  156. package/dist/src/supervisor-journal.d.ts +204 -0
  157. package/dist/src/supervisor-journal.js +336 -0
  158. package/dist/src/supervisor-loop.d.ts +40 -0
  159. package/dist/src/supervisor-loop.js +13 -0
  160. package/dist/src/task-artifacts.d.ts +53 -0
  161. package/dist/src/task-artifacts.js +13 -0
  162. package/dist/src/task-config.d.ts +22 -0
  163. package/dist/src/task-config.js +1 -0
  164. package/dist/src/task-context-renderer.d.ts +29 -0
  165. package/dist/src/task-context-renderer.js +13 -0
  166. package/dist/src/task-data.d.ts +196 -0
  167. package/dist/src/task-data.js +13 -0
  168. package/dist/src/task-graph-primitives.d.ts +47 -0
  169. package/dist/src/task-graph-primitives.js +1 -0
  170. package/dist/src/task-source.d.ts +167 -0
  171. package/dist/src/task-source.js +25 -0
  172. package/dist/src/task-state-metadata.d.ts +21 -0
  173. package/dist/src/task-state-metadata.js +1 -0
  174. package/dist/src/task-state-paths.d.ts +14 -0
  175. package/dist/src/task-state-paths.js +13 -0
  176. package/dist/src/task-state-store.d.ts +36 -0
  177. package/dist/src/task-state-store.js +17 -0
  178. package/dist/src/task-tracker-state.d.ts +101 -0
  179. package/dist/src/task-tracker-state.js +39 -0
  180. package/dist/src/terminal.d.ts +130 -0
  181. package/dist/src/terminal.js +161 -0
  182. package/dist/src/tool-materializer.d.ts +36 -0
  183. package/dist/src/tool-materializer.js +13 -0
  184. package/dist/src/tool-registry.d.ts +3 -0
  185. package/dist/src/tool-registry.js +58 -0
  186. package/dist/src/toolchain-sources.d.ts +54 -0
  187. package/dist/src/toolchain-sources.js +17 -0
  188. package/dist/src/transport-config.d.ts +161 -0
  189. package/dist/src/transport-config.js +15 -0
  190. package/dist/src/validation.d.ts +14 -0
  191. package/dist/src/validation.js +63 -0
  192. package/dist/src/workflow-journal.d.ts +125 -0
  193. package/dist/src/workflow-journal.js +27 -0
  194. package/dist/src/workspace-config.d.ts +18 -0
  195. package/dist/src/workspace-config.js +13 -0
  196. package/dist/src/workspace-service.d.ts +16 -0
  197. package/dist/src/workspace-service.js +13 -0
  198. package/dist/src/workspace.d.ts +204 -0
  199. package/dist/src/workspace.js +195 -0
  200. package/package.json +79 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Pure NOTIFY capability vocab.
3
+ *
4
+ * The neutral home for the notification event/target data types and the typed
5
+ * capability seam so the floor (and any consumer) can resolve a notifier off a
6
+ * plugin host WITHOUT importing the provider package. Carries no behaviour —
7
+ * exactly like `browser.ts` / `memory.ts`.
8
+ *
9
+ * `@rig/notifications-plugin` provides the concrete `NotifyService` impl
10
+ * (config load + target selection = policy) under
11
+ * {@link NOTIFY_SERVICE_CAPABILITY} via the `defineCapability` seam.
12
+ */
13
+ import type { CapabilityId } from "./capability-id";
14
+ /** A Rig lifecycle event eligible for outbound notification. */
15
+ export type RigEvent = {
16
+ id?: string;
17
+ runId?: string;
18
+ timestamp?: string;
19
+ type: string;
20
+ payload?: Record<string, unknown>;
21
+ };
22
+ /** A configured outbound notification channel. */
23
+ export type NotificationTarget = {
24
+ id: string;
25
+ type: "slack-webhook" | "linear-webhook" | "notion-webhook" | "generic-webhook";
26
+ url: string;
27
+ enabled?: boolean;
28
+ events?: string[];
29
+ headers?: Record<string, string>;
30
+ };
31
+ /** The on-disk notification policy (`.rig/notifications.json`). */
32
+ export type NotificationConfig = {
33
+ targets: NotificationTarget[];
34
+ };
35
+ /** Capability id the notifications plugin registers its `NotifyService` under. */
36
+ export declare const NOTIFY_SERVICE_CAPABILITY_ID = "notify.dispatch";
37
+ /**
38
+ * The cohesive notify operation consumers depend on. The impl owns the policy:
39
+ * which targets receive which events, loaded from the project's
40
+ * `.rig/notifications.json`. Returns the count of targets successfully notified.
41
+ */
42
+ export interface NotifyService {
43
+ notify(event: RigEvent): Promise<number>;
44
+ }
45
+ /** Typed capability id the notifications plugin provides and consumers require. */
46
+ export declare const NOTIFY_SERVICE_CAPABILITY: CapabilityId<NotifyService>;
@@ -0,0 +1,13 @@
1
+ // @bun
2
+ // packages/contracts/src/capability-id.ts
3
+ function makeCapabilityId(id) {
4
+ return id;
5
+ }
6
+
7
+ // packages/contracts/src/notify.ts
8
+ var NOTIFY_SERVICE_CAPABILITY_ID = "notify.dispatch";
9
+ var NOTIFY_SERVICE_CAPABILITY = makeCapabilityId(NOTIFY_SERVICE_CAPABILITY_ID);
10
+ export {
11
+ NOTIFY_SERVICE_CAPABILITY_ID,
12
+ NOTIFY_SERVICE_CAPABILITY
13
+ };
@@ -0,0 +1,43 @@
1
+ import { Schema } from "effect";
2
+ export declare const ProviderKind: Schema.Literals<readonly ["codex", "claude"]>;
3
+ export type ProviderKind = typeof ProviderKind.Type;
4
+ export declare const ProviderApprovalPolicy: Schema.Literals<readonly ["untrusted", "on-failure", "on-request", "never"]>;
5
+ export type ProviderApprovalPolicy = typeof ProviderApprovalPolicy.Type;
6
+ export declare const ProviderSandboxMode: Schema.Literals<readonly ["read-only", "workspace-write", "danger-full-access"]>;
7
+ export type ProviderSandboxMode = typeof ProviderSandboxMode.Type;
8
+ export declare const ProviderServiceTier: Schema.Literals<readonly ["fast", "flex"]>;
9
+ export type ProviderServiceTier = typeof ProviderServiceTier.Type;
10
+ export declare const RuntimeMode: Schema.Literals<readonly ["approval-required", "full-access"]>;
11
+ export type RuntimeMode = typeof RuntimeMode.Type;
12
+ export declare const DEFAULT_RUNTIME_MODE: RuntimeMode;
13
+ export declare const ProviderInteractionMode: Schema.Literals<readonly ["default", "plan"]>;
14
+ export type ProviderInteractionMode = typeof ProviderInteractionMode.Type;
15
+ export declare const DEFAULT_PROVIDER_INTERACTION_MODE: ProviderInteractionMode;
16
+ export declare const ProviderRequestKind: Schema.Literals<readonly ["command", "file-read", "file-change"]>;
17
+ export type ProviderRequestKind = typeof ProviderRequestKind.Type;
18
+ export declare const ProviderApprovalDecision: Schema.Literals<readonly ["accept", "acceptForSession", "decline", "cancel"]>;
19
+ export type ProviderApprovalDecision = typeof ProviderApprovalDecision.Type;
20
+ export declare const ProviderUserInputAnswers: Schema.$Record<Schema.String, Schema.Unknown>;
21
+ export type ProviderUserInputAnswers = typeof ProviderUserInputAnswers.Type;
22
+ export declare const PROVIDER_SEND_TURN_MAX_INPUT_CHARS = 120000;
23
+ export declare const PROVIDER_SEND_TURN_MAX_ATTACHMENTS = 8;
24
+ export declare const PROVIDER_SEND_TURN_MAX_IMAGE_BYTES: number;
25
+ declare const ChatAttachmentId: Schema.Trim;
26
+ export type ChatAttachmentId = typeof ChatAttachmentId.Type;
27
+ export declare const ChatImageAttachment: Schema.Struct<{
28
+ readonly type: Schema.Literal<"image">;
29
+ readonly id: Schema.Trim;
30
+ readonly name: Schema.Trim;
31
+ readonly mimeType: Schema.Trim;
32
+ readonly sizeBytes: Schema.Int;
33
+ }>;
34
+ export type ChatImageAttachment = typeof ChatImageAttachment.Type;
35
+ export declare const ChatAttachment: Schema.Union<readonly [Schema.Struct<{
36
+ readonly type: Schema.Literal<"image">;
37
+ readonly id: Schema.Trim;
38
+ readonly name: Schema.Trim;
39
+ readonly mimeType: Schema.Trim;
40
+ readonly sizeBytes: Schema.Int;
41
+ }>]>;
42
+ export type ChatAttachment = typeof ChatAttachment.Type;
43
+ export {};
@@ -0,0 +1,98 @@
1
+ // @bun
2
+ // packages/contracts/src/orchestration.ts
3
+ import { Schema as Schema2 } from "effect";
4
+
5
+ // packages/contracts/src/baseSchemas.ts
6
+ import { Schema } from "effect";
7
+ var TrimmedString = Schema.Trim;
8
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
9
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
10
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
11
+ var IsoDateTime = Schema.String;
12
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
13
+ var ThreadId = makeEntityId("ThreadId");
14
+ var ProjectId = makeEntityId("ProjectId");
15
+ var WorkspaceId = makeEntityId("WorkspaceId");
16
+ var GraphId = makeEntityId("GraphId");
17
+ var TaskId = makeEntityId("TaskId");
18
+ var RunId = makeEntityId("RunId");
19
+ var SafePathSegment = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafePathSegment"));
20
+ var SafeRunId = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)).pipe(Schema.brand("SafeRunId"));
21
+ var SafeGitRefComponent = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafeGitRefComponent"));
22
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
23
+ var ConversationId = makeEntityId("ConversationId");
24
+ var ActionId = makeEntityId("ActionId");
25
+ var ArtifactId = makeEntityId("ArtifactId");
26
+ var WorktreeId = makeEntityId("WorktreeId");
27
+ var ValidationResultId = makeEntityId("ValidationResultId");
28
+ var ReviewResultId = makeEntityId("ReviewResultId");
29
+ var CommandId = makeEntityId("CommandId");
30
+ var EventId = makeEntityId("EventId");
31
+ var MessageId = makeEntityId("MessageId");
32
+ var TurnId = makeEntityId("TurnId");
33
+ var ProviderItemId = makeEntityId("ProviderItemId");
34
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
35
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
36
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
37
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
38
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
39
+ var CheckpointRef = makeEntityId("CheckpointRef");
40
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
41
+
42
+ // packages/contracts/src/orchestration.ts
43
+ var ProviderKind = Schema2.Literals(["codex", "claude"]);
44
+ var ProviderApprovalPolicy = Schema2.Literals([
45
+ "untrusted",
46
+ "on-failure",
47
+ "on-request",
48
+ "never"
49
+ ]);
50
+ var ProviderSandboxMode = Schema2.Literals([
51
+ "read-only",
52
+ "workspace-write",
53
+ "danger-full-access"
54
+ ]);
55
+ var ProviderServiceTier = Schema2.Literals(["fast", "flex"]);
56
+ var RuntimeMode = Schema2.Literals(["approval-required", "full-access"]);
57
+ var DEFAULT_RUNTIME_MODE = "full-access";
58
+ var ProviderInteractionMode = Schema2.Literals(["default", "plan"]);
59
+ var DEFAULT_PROVIDER_INTERACTION_MODE = "default";
60
+ var ProviderRequestKind = Schema2.Literals(["command", "file-read", "file-change"]);
61
+ var ProviderApprovalDecision = Schema2.Literals([
62
+ "accept",
63
+ "acceptForSession",
64
+ "decline",
65
+ "cancel"
66
+ ]);
67
+ var ProviderUserInputAnswers = Schema2.Record(Schema2.String, Schema2.Unknown);
68
+ var PROVIDER_SEND_TURN_MAX_INPUT_CHARS = 120000;
69
+ var PROVIDER_SEND_TURN_MAX_ATTACHMENTS = 8;
70
+ var PROVIDER_SEND_TURN_MAX_IMAGE_BYTES = 10 * 1024 * 1024;
71
+ var CHAT_ATTACHMENT_ID_MAX_CHARS = 128;
72
+ var ChatAttachmentId = TrimmedNonEmptyString.check(Schema2.isMaxLength(CHAT_ATTACHMENT_ID_MAX_CHARS), Schema2.isPattern(/^[a-z0-9_-]+$/i));
73
+ var ChatImageAttachment = Schema2.Struct({
74
+ type: Schema2.Literal("image"),
75
+ id: ChatAttachmentId,
76
+ name: TrimmedNonEmptyString.check(Schema2.isMaxLength(255)),
77
+ mimeType: TrimmedNonEmptyString.check(Schema2.isMaxLength(100), Schema2.isPattern(/^image\//i)),
78
+ sizeBytes: NonNegativeInt.check(Schema2.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES))
79
+ });
80
+ var ChatAttachment = Schema2.Union([ChatImageAttachment]);
81
+ export {
82
+ RuntimeMode,
83
+ ProviderUserInputAnswers,
84
+ ProviderServiceTier,
85
+ ProviderSandboxMode,
86
+ ProviderRequestKind,
87
+ ProviderKind,
88
+ ProviderInteractionMode,
89
+ ProviderApprovalPolicy,
90
+ ProviderApprovalDecision,
91
+ PROVIDER_SEND_TURN_MAX_INPUT_CHARS,
92
+ PROVIDER_SEND_TURN_MAX_IMAGE_BYTES,
93
+ PROVIDER_SEND_TURN_MAX_ATTACHMENTS,
94
+ DEFAULT_RUNTIME_MODE,
95
+ DEFAULT_PROVIDER_INTERACTION_MODE,
96
+ ChatImageAttachment,
97
+ ChatAttachment
98
+ };
@@ -0,0 +1,17 @@
1
+ import type { RunJournalProjection } from "./run-journal";
2
+ /**
3
+ * Cross-package panel-protocol vocabulary shared by the run-worker (panel
4
+ * producer side) and the plugins that contribute the supervisor panel
5
+ * registration. Lives in @rig/contracts so neither side has to depend on the
6
+ * other's package for these constants.
7
+ */
8
+ export declare const RIG_RUN_STOP_PANEL_ACTION = "rig-run:stop";
9
+ export declare const RIG_CAPABILITY_PANEL_SLOT = "capability";
10
+ export declare const RIG_SUPERVISOR_PANEL_ID = "supervisor";
11
+ export interface WorkerPanelProducerContext {
12
+ readonly projectRoot: string;
13
+ readonly runId: string;
14
+ readonly folded: RunJournalProjection;
15
+ readonly taskIdAtStart?: string | null;
16
+ readonly runDisplayTitle: string;
17
+ }
@@ -0,0 +1,10 @@
1
+ // @bun
2
+ // packages/contracts/src/panel-protocol.ts
3
+ var RIG_RUN_STOP_PANEL_ACTION = "rig-run:stop";
4
+ var RIG_CAPABILITY_PANEL_SLOT = "capability";
5
+ var RIG_SUPERVISOR_PANEL_ID = "supervisor";
6
+ export {
7
+ RIG_SUPERVISOR_PANEL_ID,
8
+ RIG_RUN_STOP_PANEL_ACTION,
9
+ RIG_CAPABILITY_PANEL_SLOT
10
+ };
@@ -0,0 +1,113 @@
1
+ export type RigPiSessionTransport = "http-control-ws-events";
2
+ export interface RigPiSessionMetadata {
3
+ runId: string;
4
+ sessionId: string;
5
+ daemonId: string;
6
+ cwd: string;
7
+ agentDir: string;
8
+ sessionDir: string;
9
+ transport: RigPiSessionTransport;
10
+ /**
11
+ * Absolute path of the Pi session jsonl backing this session, when the
12
+ * session persists to disk. Recorded on the run record so a tier-1
13
+ * re-dispatch (deploy-safe runs) can reopen the same session.
14
+ */
15
+ sessionFile?: string;
16
+ /**
17
+ * Set when the daemon reopened a previous attempt's session file instead
18
+ * of creating a fresh session (tier-1 session resume).
19
+ */
20
+ resumedFromSessionFile?: string;
21
+ serverBasePath: string;
22
+ eventsPath: string;
23
+ createdAt: string;
24
+ updatedAt: string;
25
+ backend: {
26
+ kind: "worker-pi-sessiond";
27
+ version: string;
28
+ pid?: number;
29
+ commit?: string;
30
+ };
31
+ }
32
+ export type RigPiDaemonConnection = {
33
+ mode: "unix";
34
+ socketPath: string;
35
+ tokenRef: string;
36
+ endpointId?: string;
37
+ hostId?: string;
38
+ } | {
39
+ mode: "http";
40
+ baseUrl: string;
41
+ tokenRef: string;
42
+ endpointId?: string;
43
+ hostId?: string;
44
+ };
45
+ export interface RigPiSessionPrivateMetadata {
46
+ public: RigPiSessionMetadata;
47
+ daemonConnection: RigPiDaemonConnection;
48
+ }
49
+ export type RigPiControlStreamingBehavior = "steer" | "followUp";
50
+ export interface RigPiPromptRequest {
51
+ text: string;
52
+ streamingBehavior?: RigPiControlStreamingBehavior;
53
+ }
54
+ export interface RigPiShellRequest {
55
+ text: string;
56
+ }
57
+ export interface RigPiCommandRequest {
58
+ text: string;
59
+ }
60
+ export interface RigPiCommandResponseRequest {
61
+ requestId: string;
62
+ value?: unknown;
63
+ cancelled?: boolean;
64
+ }
65
+ export interface RigPiExtensionUiResponseRequest {
66
+ requestId: string;
67
+ value?: unknown;
68
+ cancelled?: boolean;
69
+ }
70
+ export interface RigPiReadyPendingResponse {
71
+ ready: false;
72
+ runId: string;
73
+ status?: string;
74
+ retryAfterMs: number;
75
+ }
76
+ export interface RigPiReadyResponse {
77
+ ready: true;
78
+ metadata: RigPiSessionMetadata;
79
+ }
80
+ export type RigPiSessionResponse = RigPiReadyPendingResponse | RigPiReadyResponse;
81
+ export type RigPiEventEnvelope = {
82
+ type: "ready";
83
+ metadata: RigPiSessionMetadata;
84
+ } | {
85
+ type: "pi.event";
86
+ sessionId: string;
87
+ runId?: string;
88
+ event: unknown;
89
+ } | {
90
+ type: "pi.ui_event";
91
+ sessionId: string;
92
+ runId?: string;
93
+ event: unknown;
94
+ } | {
95
+ type: "extension_ui_request";
96
+ sessionId: string;
97
+ runId?: string;
98
+ request: unknown;
99
+ } | {
100
+ type: "status.update";
101
+ sessionId: string;
102
+ runId?: string;
103
+ status: unknown;
104
+ } | {
105
+ type: "activity.update";
106
+ sessionId: string;
107
+ runId?: string;
108
+ activity: unknown;
109
+ } | {
110
+ type: "error";
111
+ message: string;
112
+ detail?: unknown;
113
+ };
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,47 @@
1
+ import type { CapabilityId } from "./capability-id";
2
+ export type PlacementKind = "local" | "remote";
3
+ export type Placement = {
4
+ readonly alias: string;
5
+ readonly kind: PlacementKind;
6
+ readonly host?: string | null;
7
+ readonly port?: number | null;
8
+ readonly baseUrl?: string | null;
9
+ readonly projectRoot?: string | null;
10
+ readonly status?: string | null;
11
+ readonly taskSource?: string | null;
12
+ };
13
+ export type AddPlacementInput = {
14
+ readonly alias: string;
15
+ readonly host: string;
16
+ readonly port?: number;
17
+ readonly token?: string | null;
18
+ readonly select?: boolean;
19
+ };
20
+ export interface PlacementService {
21
+ readonly readPlacement: (input: {
22
+ readonly projectRoot: string;
23
+ }) => Promise<Placement>;
24
+ readonly listPlacements: (input: {
25
+ readonly projectRoot: string;
26
+ }) => Promise<readonly Placement[]>;
27
+ readonly selectPlacement: (input: {
28
+ readonly projectRoot: string;
29
+ readonly alias: string;
30
+ readonly dryRun?: boolean;
31
+ }) => Promise<Placement>;
32
+ readonly addPlacement: (input: {
33
+ readonly projectRoot: string;
34
+ readonly placement: AddPlacementInput;
35
+ readonly dryRun?: boolean;
36
+ }) => Promise<Placement>;
37
+ readonly removePlacement: (input: {
38
+ readonly projectRoot: string;
39
+ readonly alias: string;
40
+ readonly dryRun?: boolean;
41
+ }) => Promise<{
42
+ readonly alias: string;
43
+ readonly removed: boolean;
44
+ }>;
45
+ }
46
+ export declare const PLACEMENT_SERVICE_CAPABILITY_ID = "rig.transport.placement";
47
+ export declare const PLACEMENT_SERVICE: CapabilityId<PlacementService>;
@@ -0,0 +1,13 @@
1
+ // @bun
2
+ // packages/contracts/src/capability-id.ts
3
+ function makeCapabilityId(id) {
4
+ return id;
5
+ }
6
+
7
+ // packages/contracts/src/placement.ts
8
+ var PLACEMENT_SERVICE_CAPABILITY_ID = "rig.transport.placement";
9
+ var PLACEMENT_SERVICE = makeCapabilityId(PLACEMENT_SERVICE_CAPABILITY_ID);
10
+ export {
11
+ PLACEMENT_SERVICE_CAPABILITY_ID,
12
+ PLACEMENT_SERVICE
13
+ };
@@ -0,0 +1,64 @@
1
+ import { Schema } from "effect";
2
+ export declare const ClarificationStatus: Schema.Literals<readonly ["open", "resolved-from-code", "resolved-by-human", "deferred"]>;
3
+ export type ClarificationStatus = typeof ClarificationStatus.Type;
4
+ export declare const OpenQuestion: Schema.Struct<{
5
+ readonly id: Schema.Trim;
6
+ readonly question: Schema.Trim;
7
+ readonly status: Schema.Literals<readonly ["open", "resolved-from-code", "resolved-by-human", "deferred"]>;
8
+ readonly resolution: Schema.NullOr<Schema.String>;
9
+ }>;
10
+ export type OpenQuestion = typeof OpenQuestion.Type;
11
+ export declare const UserStory: Schema.Struct<{
12
+ readonly id: Schema.Trim;
13
+ readonly title: Schema.Trim;
14
+ readonly priority: Schema.Int;
15
+ }>;
16
+ export type UserStory = typeof UserStory.Type;
17
+ export declare const FunctionalRequirement: Schema.Struct<{
18
+ readonly id: Schema.Trim;
19
+ readonly text: Schema.Trim;
20
+ }>;
21
+ export type FunctionalRequirement = typeof FunctionalRequirement.Type;
22
+ export declare const PlanTask: Schema.Struct<{
23
+ readonly localId: Schema.Trim;
24
+ readonly title: Schema.Trim;
25
+ readonly description: Schema.String;
26
+ readonly acceptance: Schema.$Array<Schema.String>;
27
+ readonly scope: Schema.$Array<Schema.Trim>;
28
+ readonly validationKeys: Schema.$Array<Schema.Trim>;
29
+ readonly dependsOn: Schema.$Array<Schema.Trim>;
30
+ readonly parent: Schema.NullOr<Schema.Trim>;
31
+ readonly parallelizable: Schema.Boolean;
32
+ }>;
33
+ export type PlanTask = typeof PlanTask.Type;
34
+ export declare const PlanSpec: Schema.Struct<{
35
+ readonly prdTitle: Schema.Trim;
36
+ readonly userStories: Schema.$Array<Schema.Struct<{
37
+ readonly id: Schema.Trim;
38
+ readonly title: Schema.Trim;
39
+ readonly priority: Schema.Int;
40
+ }>>;
41
+ readonly functionalRequirements: Schema.$Array<Schema.Struct<{
42
+ readonly id: Schema.Trim;
43
+ readonly text: Schema.Trim;
44
+ }>>;
45
+ readonly openQuestions: Schema.$Array<Schema.Struct<{
46
+ readonly id: Schema.Trim;
47
+ readonly question: Schema.Trim;
48
+ readonly status: Schema.Literals<readonly ["open", "resolved-from-code", "resolved-by-human", "deferred"]>;
49
+ readonly resolution: Schema.NullOr<Schema.String>;
50
+ }>>;
51
+ readonly tasks: Schema.$Array<Schema.Struct<{
52
+ readonly localId: Schema.Trim;
53
+ readonly title: Schema.Trim;
54
+ readonly description: Schema.String;
55
+ readonly acceptance: Schema.$Array<Schema.String>;
56
+ readonly scope: Schema.$Array<Schema.Trim>;
57
+ readonly validationKeys: Schema.$Array<Schema.Trim>;
58
+ readonly dependsOn: Schema.$Array<Schema.Trim>;
59
+ readonly parent: Schema.NullOr<Schema.Trim>;
60
+ readonly parallelizable: Schema.Boolean;
61
+ }>>;
62
+ readonly generatedAt: Schema.String;
63
+ }>;
64
+ export type PlanSpec = typeof PlanSpec.Type;
@@ -0,0 +1,90 @@
1
+ // @bun
2
+ // packages/contracts/src/planning.ts
3
+ import { Schema as Schema2 } from "effect";
4
+
5
+ // packages/contracts/src/baseSchemas.ts
6
+ import { Schema } from "effect";
7
+ var TrimmedString = Schema.Trim;
8
+ var TrimmedNonEmptyString = TrimmedString.check(Schema.isNonEmpty());
9
+ var NonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
10
+ var PositiveInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1));
11
+ var IsoDateTime = Schema.String;
12
+ var makeEntityId = (brand) => TrimmedNonEmptyString.pipe(Schema.brand(brand));
13
+ var ThreadId = makeEntityId("ThreadId");
14
+ var ProjectId = makeEntityId("ProjectId");
15
+ var WorkspaceId = makeEntityId("WorkspaceId");
16
+ var GraphId = makeEntityId("GraphId");
17
+ var TaskId = makeEntityId("TaskId");
18
+ var RunId = makeEntityId("RunId");
19
+ var SafePathSegment = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafePathSegment"));
20
+ var SafeRunId = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/)).pipe(Schema.brand("SafeRunId"));
21
+ var SafeGitRefComponent = TrimmedNonEmptyString.check(Schema.isPattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/)).pipe(Schema.brand("SafeGitRefComponent"));
22
+ var EngineRuntimeId = makeEntityId("EngineRuntimeId");
23
+ var ConversationId = makeEntityId("ConversationId");
24
+ var ActionId = makeEntityId("ActionId");
25
+ var ArtifactId = makeEntityId("ArtifactId");
26
+ var WorktreeId = makeEntityId("WorktreeId");
27
+ var ValidationResultId = makeEntityId("ValidationResultId");
28
+ var ReviewResultId = makeEntityId("ReviewResultId");
29
+ var CommandId = makeEntityId("CommandId");
30
+ var EventId = makeEntityId("EventId");
31
+ var MessageId = makeEntityId("MessageId");
32
+ var TurnId = makeEntityId("TurnId");
33
+ var ProviderItemId = makeEntityId("ProviderItemId");
34
+ var RuntimeSessionId = makeEntityId("RuntimeSessionId");
35
+ var RuntimeItemId = makeEntityId("RuntimeItemId");
36
+ var RuntimeRequestId = makeEntityId("RuntimeRequestId");
37
+ var RuntimeTaskId = makeEntityId("RuntimeTaskId");
38
+ var ApprovalRequestId = makeEntityId("ApprovalRequestId");
39
+ var CheckpointRef = makeEntityId("CheckpointRef");
40
+ var RemoteEndpointId = makeEntityId("RemoteEndpointId");
41
+
42
+ // packages/contracts/src/planning.ts
43
+ var ClarificationStatus = Schema2.Literals([
44
+ "open",
45
+ "resolved-from-code",
46
+ "resolved-by-human",
47
+ "deferred"
48
+ ]);
49
+ var OpenQuestion = Schema2.Struct({
50
+ id: TrimmedNonEmptyString,
51
+ question: TrimmedNonEmptyString,
52
+ status: ClarificationStatus,
53
+ resolution: Schema2.NullOr(Schema2.String)
54
+ });
55
+ var UserStory = Schema2.Struct({
56
+ id: TrimmedNonEmptyString,
57
+ title: TrimmedNonEmptyString,
58
+ priority: PositiveInt
59
+ });
60
+ var FunctionalRequirement = Schema2.Struct({
61
+ id: TrimmedNonEmptyString,
62
+ text: TrimmedNonEmptyString
63
+ });
64
+ var PlanTask = Schema2.Struct({
65
+ localId: TrimmedNonEmptyString,
66
+ title: TrimmedNonEmptyString,
67
+ description: Schema2.String,
68
+ acceptance: Schema2.Array(Schema2.String),
69
+ scope: Schema2.Array(TrimmedNonEmptyString),
70
+ validationKeys: Schema2.Array(TrimmedNonEmptyString),
71
+ dependsOn: Schema2.Array(TrimmedNonEmptyString),
72
+ parent: Schema2.NullOr(TrimmedNonEmptyString),
73
+ parallelizable: Schema2.Boolean
74
+ });
75
+ var PlanSpec = Schema2.Struct({
76
+ prdTitle: TrimmedNonEmptyString,
77
+ userStories: Schema2.Array(UserStory),
78
+ functionalRequirements: Schema2.Array(FunctionalRequirement),
79
+ openQuestions: Schema2.Array(OpenQuestion),
80
+ tasks: Schema2.Array(PlanTask),
81
+ generatedAt: IsoDateTime
82
+ });
83
+ export {
84
+ UserStory,
85
+ PlanTask,
86
+ PlanSpec,
87
+ OpenQuestion,
88
+ FunctionalRequirement,
89
+ ClarificationStatus
90
+ };
@@ -0,0 +1,51 @@
1
+ import { Schema } from "effect";
2
+ /** Tool input payload as delivered on the hook's stdin (`tool_input`). */
3
+ export declare const HookToolInput: Schema.$Record<Schema.String, Schema.Unknown>;
4
+ export type HookToolInput = typeof HookToolInput.Type;
5
+ /**
6
+ * Parsed hook invocation handed to a typed hook implementation.
7
+ *
8
+ * Derived from the Claude Code hook stdin payload (see
9
+ * @rig/core/hook-protocol's `readHookInput`) plus the runner's resolved
10
+ * environment:
11
+ * - `event` — the lifecycle event the hook fired on
12
+ * - `toolName` — `tool_name` from the payload (absent for non-tool events)
13
+ * - `toolInput` — `tool_input` from the payload (`{}` when absent)
14
+ * - `filePaths` — file path candidates extracted from the tool input
15
+ * - `projectRoot` — resolved project root
16
+ * - `taskId` — current Rig task id, `""` when not running inside a task
17
+ */
18
+ export declare const HookContext: Schema.Struct<{
19
+ readonly event: Schema.Literals<readonly ["PreToolUse", "PostToolUse", "UserPromptSubmit", "Stop", "SessionStart", "SessionEnd"]>;
20
+ readonly toolName: Schema.optional<Schema.String>;
21
+ readonly toolInput: Schema.$Record<Schema.String, Schema.Unknown>;
22
+ readonly filePaths: Schema.$Array<Schema.String>;
23
+ readonly projectRoot: Schema.String;
24
+ readonly taskId: Schema.String;
25
+ }>;
26
+ export type HookContext = typeof HookContext.Type;
27
+ export declare const HookDecision: Schema.Literals<readonly ["allow", "block"]>;
28
+ export type HookDecision = typeof HookDecision.Type;
29
+ /**
30
+ * Result returned by a typed hook implementation.
31
+ *
32
+ * Serialized to the same stdout/exit-code protocol that
33
+ * @rig/core/hook-protocol's `block()` uses:
34
+ * - `decision: "block"` → `BLOCKED: <reason>` on stdout, non-zero exit
35
+ * - `decision: "allow"` → exit 0; `systemMessage` (when set) on stdout
36
+ */
37
+ export declare const HookResult: Schema.Struct<{
38
+ readonly decision: Schema.Literals<readonly ["allow", "block"]>;
39
+ /** Why the action was blocked. Surfaced to the agent on stdout. */
40
+ readonly reason: Schema.optional<Schema.String>;
41
+ /** Extra context printed on stdout for either decision. */
42
+ readonly systemMessage: Schema.optional<Schema.String>;
43
+ }>;
44
+ export type HookResult = typeof HookResult.Type;
45
+ /**
46
+ * A typed hook implementation. Registered per hook id via definePlugin's
47
+ * plugin object: `definePlugin(meta, { hooks: { [hookId]: impl } })`.
48
+ * Functions can't be represented by Schema, so this is a plain type — the
49
+ * referential-integrity rules are enforced by @rig/core's definePlugin.
50
+ */
51
+ export type HookImplementation = (input: HookContext) => Promise<HookResult> | HookResult;