@h-rig/contracts 0.0.6-alpha.18 → 0.0.6-alpha.180
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3442 -0
- package/dist/index.mjs +3401 -0
- package/dist/src/agent-roles.d.ts +8 -0
- package/dist/src/artifact.d.ts +13 -0
- package/dist/src/artifact.js +3 -0
- package/dist/src/baseSchemas.d.ts +63 -0
- package/dist/src/baseSchemas.js +6 -0
- package/dist/src/blocker-classifier.d.ts +21 -0
- package/dist/src/blocker-classifier.js +13 -0
- package/dist/src/browser.d.ts +80 -0
- package/dist/src/browser.js +13 -0
- package/dist/src/capability-id.d.ts +22 -0
- package/dist/src/capability-id.js +8 -0
- package/dist/src/cli-output.d.ts +348 -0
- package/dist/src/cli-output.js +190 -0
- package/dist/src/cli-runner.d.ts +43 -0
- package/dist/src/cli-runner.js +13 -0
- package/dist/src/cockpit.d.ts +58 -0
- package/dist/src/cockpit.js +13 -0
- package/dist/src/collab-session-viewer.d.ts +36 -0
- package/dist/src/collab-session-viewer.js +13 -0
- package/dist/src/config.d.ts +553 -0
- package/dist/src/config.js +767 -162
- package/dist/src/control-plane-types.d.ts +323 -0
- package/dist/src/control-plane-types.js +13 -0
- package/dist/src/conversation.d.ts +50 -0
- package/dist/src/conversation.js +3 -0
- package/dist/src/dependency-preflight.d.ts +43 -0
- package/dist/src/dependency-preflight.js +13 -0
- package/dist/src/docs-drift.d.ts +10 -0
- package/dist/src/docs-drift.js +12 -0
- package/dist/src/doctor.d.ts +90 -0
- package/dist/src/doctor.js +13 -0
- package/dist/src/drift.d.ts +28 -0
- package/dist/src/drift.js +69 -0
- package/dist/src/editor.d.ts +25 -0
- package/dist/src/editor.js +3 -0
- package/dist/src/errors.d.ts +13 -0
- package/dist/src/errors.js +17 -0
- package/dist/src/git.d.ts +152 -0
- package/dist/src/git.js +3 -0
- package/dist/src/github.d.ts +295 -0
- package/dist/src/github.js +17 -0
- package/dist/src/graph.d.ts +360 -0
- package/dist/src/graph.js +137 -1
- package/dist/src/guard.d.ts +118 -0
- package/dist/src/guard.js +15 -0
- package/dist/src/harness-events.d.ts +8 -0
- package/dist/src/harness-events.js +1 -0
- package/dist/src/harness-profile-state.d.ts +10 -0
- package/dist/src/harness-profile-state.js +13 -0
- package/dist/src/help-catalog.d.ts +41 -0
- package/dist/src/help-catalog.js +13 -0
- package/dist/src/host.d.ts +41 -0
- package/dist/src/host.js +13 -0
- package/dist/src/identity.d.ts +44 -0
- package/dist/src/identity.js +1 -0
- package/dist/src/index.d.ts +98 -0
- package/dist/src/index.js +2605 -3752
- package/dist/src/isolation.d.ts +213 -0
- package/dist/src/isolation.js +13 -0
- package/dist/src/kernel.d.ts +200 -0
- package/dist/src/kernel.js +261 -0
- package/dist/src/keybindings.d.ts +71 -0
- package/dist/src/keybindings.js +3 -0
- package/dist/src/layout.d.ts +44 -0
- package/dist/src/layout.js +8 -0
- package/dist/src/lifecycle-capabilities.d.ts +224 -0
- package/dist/src/lifecycle-capabilities.js +45 -0
- package/dist/src/managed-repos.d.ts +339 -0
- package/dist/src/managed-repos.js +37 -0
- package/dist/src/memory.d.ts +199 -0
- package/dist/src/memory.js +15 -0
- package/dist/src/model.d.ts +13 -0
- package/dist/src/model.js +3 -58
- package/dist/src/native-toolchain.d.ts +46 -0
- package/dist/src/native-toolchain.js +13 -0
- package/dist/src/notify.d.ts +46 -0
- package/dist/src/notify.js +13 -0
- package/dist/src/orchestration.d.ts +43 -0
- package/dist/src/orchestration.js +28 -961
- package/dist/src/panel-protocol.d.ts +17 -0
- package/dist/src/panel-protocol.js +10 -0
- package/dist/src/pi-session.d.ts +113 -0
- package/dist/src/pi-session.js +1 -0
- package/dist/src/placement.d.ts +47 -0
- package/dist/src/placement.js +13 -0
- package/dist/src/planning.d.ts +64 -0
- package/dist/src/planning.js +90 -0
- package/dist/src/plugin-hooks.d.ts +51 -0
- package/dist/src/plugin-hooks.js +386 -0
- package/dist/src/plugin.d.ts +476 -0
- package/dist/src/plugin.js +346 -64
- package/dist/src/policy.d.ts +16 -0
- package/dist/src/policy.js +3 -0
- package/dist/src/product-entrypoint.d.ts +22 -0
- package/dist/src/product-entrypoint.js +13 -0
- package/dist/src/project.d.ts +71 -0
- package/dist/src/project.js +3 -0
- package/dist/src/prompt.d.ts +29 -0
- package/dist/src/prompt.js +13 -0
- package/dist/src/protocol-version.d.ts +21 -0
- package/dist/src/protocol-version.js +6 -0
- package/dist/src/provider-instructions.d.ts +41 -0
- package/dist/src/provider-instructions.js +13 -0
- package/dist/src/provider.d.ts +105 -0
- package/dist/src/provider.js +16 -835
- package/dist/src/remote-control.d.ts +93 -0
- package/dist/src/remote-control.js +26 -0
- package/dist/src/remote.d.ts +318 -0
- package/dist/src/remote.js +238 -1078
- package/dist/src/review.d.ts +18 -0
- package/dist/src/review.js +3 -0
- package/dist/src/rollups.d.ts +41 -0
- package/dist/src/rollups.js +70 -0
- package/dist/src/run-control.d.ts +164 -0
- package/dist/src/run-control.js +13 -0
- package/dist/src/run-discovery.d.ts +83 -0
- package/dist/src/run-discovery.js +13 -0
- package/dist/src/run-dispatch.d.ts +34 -0
- package/dist/src/run-dispatch.js +13 -0
- package/dist/src/run-identity.d.ts +47 -0
- package/dist/src/run-identity.js +13 -0
- package/dist/src/run-journal.d.ts +694 -0
- package/dist/src/run-journal.js +569 -0
- package/dist/src/run-queue.d.ts +36 -0
- package/dist/src/run-queue.js +13 -0
- package/dist/src/run-read-model.d.ts +200 -0
- package/dist/src/run-read-model.js +13 -0
- package/dist/src/run-record.d.ts +45 -0
- package/dist/src/run-record.js +1 -0
- package/dist/src/run-registry-backbone.d.ts +56 -0
- package/dist/src/run-registry-backbone.js +13 -0
- package/dist/src/run-session-journal.d.ts +154 -0
- package/dist/src/run-session-journal.js +87 -0
- package/dist/src/run-status.d.ts +10 -0
- package/dist/src/run-status.js +27 -0
- package/dist/src/run-timeline.d.ts +7 -0
- package/dist/src/run-timeline.js +1 -0
- package/dist/src/runtime-secrets.d.ts +10 -0
- package/dist/src/runtime-secrets.js +13 -0
- package/dist/src/runtime-task-context.d.ts +82 -0
- package/dist/src/runtime-task-context.js +1 -0
- package/dist/src/runtime.d.ts +103 -0
- package/dist/src/runtime.js +73 -906
- package/dist/src/session-asset-materializer.d.ts +35 -0
- package/dist/src/session-asset-materializer.js +13 -0
- package/dist/src/session-hook-materializer.d.ts +41 -0
- package/dist/src/session-hook-materializer.js +13 -0
- package/dist/src/setup.d.ts +154 -0
- package/dist/src/setup.js +13 -0
- package/dist/src/stage.d.ts +245 -0
- package/dist/src/stage.js +169 -0
- package/dist/src/supervisor-journal.d.ts +204 -0
- package/dist/src/supervisor-journal.js +336 -0
- package/dist/src/supervisor-loop.d.ts +40 -0
- package/dist/src/supervisor-loop.js +13 -0
- package/dist/src/task-artifacts.d.ts +53 -0
- package/dist/src/task-artifacts.js +13 -0
- package/dist/src/task-config.d.ts +22 -0
- package/dist/src/task-config.js +1 -0
- package/dist/src/task-context-renderer.d.ts +29 -0
- package/dist/src/task-context-renderer.js +13 -0
- package/dist/src/task-data.d.ts +196 -0
- package/dist/src/task-data.js +13 -0
- package/dist/src/task-graph-primitives.d.ts +47 -0
- package/dist/src/task-graph-primitives.js +1 -0
- package/dist/src/task-source.d.ts +167 -0
- package/dist/src/task-source.js +24 -0
- package/dist/src/task-state-metadata.d.ts +21 -0
- package/dist/src/task-state-metadata.js +1 -0
- package/dist/src/task-state-paths.d.ts +14 -0
- package/dist/src/task-state-paths.js +13 -0
- package/dist/src/task-state-store.d.ts +36 -0
- package/dist/src/task-state-store.js +17 -0
- package/dist/src/task-tracker-state.d.ts +101 -0
- package/dist/src/task-tracker-state.js +39 -0
- package/dist/src/terminal.d.ts +130 -0
- package/dist/src/terminal.js +3 -0
- package/dist/src/tool-materializer.d.ts +36 -0
- package/dist/src/tool-materializer.js +13 -0
- package/dist/src/tool-registry.d.ts +3 -0
- package/dist/src/tool-registry.js +58 -0
- package/dist/src/toolchain-sources.d.ts +54 -0
- package/dist/src/toolchain-sources.js +17 -0
- package/dist/src/transport-config.d.ts +161 -0
- package/dist/src/transport-config.js +15 -0
- package/dist/src/validation.d.ts +14 -0
- package/dist/src/validation.js +3 -0
- package/dist/src/workflow-journal.d.ts +125 -0
- package/dist/src/workflow-journal.js +27 -0
- package/dist/src/workspace-config.d.ts +18 -0
- package/dist/src/workspace-config.js +13 -0
- package/dist/src/workspace-service.d.ts +16 -0
- package/dist/src/workspace-service.js +13 -0
- package/dist/src/workspace.d.ts +204 -0
- package/dist/src/workspace.js +76 -911
- package/package.json +55 -4
- package/dist/src/engine.js +0 -2278
- package/dist/src/providerRuntime.js +0 -1630
- package/dist/src/rig.js +0 -2374
- package/dist/src/server.js +0 -1053
- package/dist/src/serviceFabric.js +0 -1066
- package/dist/src/ws.js +0 -2968
- /package/dist/src/{ipc.js → agent-roles.js} +0 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// packages/contracts/src/supervisor-journal.ts
|
|
3
|
+
import { Schema as Schema4 } 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/runtime.ts
|
|
43
|
+
import { Schema as Schema3 } from "effect";
|
|
44
|
+
|
|
45
|
+
// packages/contracts/src/orchestration.ts
|
|
46
|
+
import { Schema as Schema2 } from "effect";
|
|
47
|
+
var ProviderKind = Schema2.Literals(["codex", "claude"]);
|
|
48
|
+
var ProviderApprovalPolicy = Schema2.Literals([
|
|
49
|
+
"untrusted",
|
|
50
|
+
"on-failure",
|
|
51
|
+
"on-request",
|
|
52
|
+
"never"
|
|
53
|
+
]);
|
|
54
|
+
var ProviderSandboxMode = Schema2.Literals([
|
|
55
|
+
"read-only",
|
|
56
|
+
"workspace-write",
|
|
57
|
+
"danger-full-access"
|
|
58
|
+
]);
|
|
59
|
+
var ProviderServiceTier = Schema2.Literals(["fast", "flex"]);
|
|
60
|
+
var RuntimeMode = Schema2.Literals(["approval-required", "full-access"]);
|
|
61
|
+
var ProviderInteractionMode = Schema2.Literals(["default", "plan"]);
|
|
62
|
+
var ProviderRequestKind = Schema2.Literals(["command", "file-read", "file-change"]);
|
|
63
|
+
var ProviderApprovalDecision = Schema2.Literals([
|
|
64
|
+
"accept",
|
|
65
|
+
"acceptForSession",
|
|
66
|
+
"decline",
|
|
67
|
+
"cancel"
|
|
68
|
+
]);
|
|
69
|
+
var ProviderUserInputAnswers = Schema2.Record(Schema2.String, Schema2.Unknown);
|
|
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
|
+
|
|
82
|
+
// packages/contracts/src/runtime.ts
|
|
83
|
+
var RunKind = Schema3.Literals(["adhoc", "task", "batch", "validation", "review"]);
|
|
84
|
+
var RunMode = Schema3.Literals(["interactive", "autonomous", "supervised"]);
|
|
85
|
+
var RunStatus = Schema3.Literals([
|
|
86
|
+
"created",
|
|
87
|
+
"queued",
|
|
88
|
+
"preparing",
|
|
89
|
+
"running",
|
|
90
|
+
"waiting-approval",
|
|
91
|
+
"waiting-user-input",
|
|
92
|
+
"paused",
|
|
93
|
+
"validating",
|
|
94
|
+
"reviewing",
|
|
95
|
+
"closing-out",
|
|
96
|
+
"needs-attention",
|
|
97
|
+
"completed",
|
|
98
|
+
"failed",
|
|
99
|
+
"stopped"
|
|
100
|
+
]);
|
|
101
|
+
var EngineSandboxMode = Schema3.Literals([
|
|
102
|
+
"read-only",
|
|
103
|
+
"workspace-write",
|
|
104
|
+
"danger-full-access"
|
|
105
|
+
]);
|
|
106
|
+
var IsolationMode = Schema3.Literals(["none", "env", "worktree"]);
|
|
107
|
+
var RuntimeStatus = Schema3.Literals([
|
|
108
|
+
"prepared",
|
|
109
|
+
"starting",
|
|
110
|
+
"running",
|
|
111
|
+
"interrupted",
|
|
112
|
+
"exited",
|
|
113
|
+
"failed",
|
|
114
|
+
"destroyed"
|
|
115
|
+
]);
|
|
116
|
+
var RunExecutionTarget = Schema3.Literals(["local", "remote"]);
|
|
117
|
+
var RunSummary = Schema3.Struct({
|
|
118
|
+
id: RunId,
|
|
119
|
+
workspaceId: WorkspaceId,
|
|
120
|
+
taskId: Schema3.NullOr(TaskId),
|
|
121
|
+
title: TrimmedNonEmptyString,
|
|
122
|
+
runKind: RunKind,
|
|
123
|
+
mode: RunMode,
|
|
124
|
+
runtimeMode: RuntimeMode,
|
|
125
|
+
interactionMode: ProviderInteractionMode,
|
|
126
|
+
status: RunStatus,
|
|
127
|
+
runtimeAdapter: Schema3.Literal("pi"),
|
|
128
|
+
model: Schema3.NullOr(TrimmedNonEmptyString),
|
|
129
|
+
initialPrompt: Schema3.NullOr(Schema3.String),
|
|
130
|
+
executionTarget: Schema3.optional(RunExecutionTarget),
|
|
131
|
+
remoteHostId: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
|
|
132
|
+
remoteLeaseId: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
|
|
133
|
+
remoteLeaseClaimedAt: Schema3.optional(Schema3.NullOr(IsoDateTime)),
|
|
134
|
+
activeRuntimeId: Schema3.NullOr(EngineRuntimeId),
|
|
135
|
+
latestMessageId: Schema3.NullOr(TrimmedNonEmptyString),
|
|
136
|
+
pendingApprovalCount: NonNegativeInt,
|
|
137
|
+
pendingUserInputCount: NonNegativeInt,
|
|
138
|
+
branch: Schema3.NullOr(TrimmedNonEmptyString),
|
|
139
|
+
worktreePath: Schema3.NullOr(TrimmedNonEmptyString),
|
|
140
|
+
errorText: Schema3.NullOr(Schema3.String),
|
|
141
|
+
createdAt: IsoDateTime,
|
|
142
|
+
updatedAt: IsoDateTime,
|
|
143
|
+
startedAt: Schema3.NullOr(IsoDateTime),
|
|
144
|
+
completedAt: Schema3.NullOr(IsoDateTime)
|
|
145
|
+
});
|
|
146
|
+
var RuntimeSummary = Schema3.Struct({
|
|
147
|
+
id: EngineRuntimeId,
|
|
148
|
+
workspaceId: WorkspaceId,
|
|
149
|
+
runId: RunId,
|
|
150
|
+
adapterKind: Schema3.Literal("pi"),
|
|
151
|
+
executionTarget: Schema3.optional(RunExecutionTarget),
|
|
152
|
+
remoteHostId: Schema3.optional(Schema3.NullOr(TrimmedNonEmptyString)),
|
|
153
|
+
status: RuntimeStatus,
|
|
154
|
+
sandboxMode: EngineSandboxMode,
|
|
155
|
+
isolationMode: IsolationMode,
|
|
156
|
+
workspaceDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
157
|
+
homeDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
158
|
+
tmpDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
159
|
+
cacheDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
160
|
+
logsDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
161
|
+
stateDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
162
|
+
sessionDir: Schema3.NullOr(TrimmedNonEmptyString),
|
|
163
|
+
sessionLogPath: Schema3.NullOr(TrimmedNonEmptyString),
|
|
164
|
+
pid: Schema3.NullOr(NonNegativeInt),
|
|
165
|
+
startedAt: Schema3.NullOr(IsoDateTime),
|
|
166
|
+
updatedAt: IsoDateTime,
|
|
167
|
+
exitedAt: Schema3.NullOr(IsoDateTime)
|
|
168
|
+
});
|
|
169
|
+
var ApprovalStatus = Schema3.Literals(["pending", "resolved"]);
|
|
170
|
+
var ApprovalSummary = Schema3.Struct({
|
|
171
|
+
id: TrimmedNonEmptyString,
|
|
172
|
+
runId: RunId,
|
|
173
|
+
actionId: Schema3.NullOr(TrimmedNonEmptyString),
|
|
174
|
+
requestKind: TrimmedNonEmptyString,
|
|
175
|
+
status: ApprovalStatus,
|
|
176
|
+
payload: Schema3.Unknown,
|
|
177
|
+
createdAt: IsoDateTime,
|
|
178
|
+
resolvedAt: Schema3.NullOr(IsoDateTime)
|
|
179
|
+
});
|
|
180
|
+
var UserInputRequestSummary = Schema3.Struct({
|
|
181
|
+
id: TrimmedNonEmptyString,
|
|
182
|
+
runId: RunId,
|
|
183
|
+
status: ApprovalStatus,
|
|
184
|
+
payload: Schema3.Unknown,
|
|
185
|
+
createdAt: IsoDateTime,
|
|
186
|
+
resolvedAt: Schema3.NullOr(IsoDateTime)
|
|
187
|
+
});
|
|
188
|
+
var WorktreeSummary = Schema3.Struct({
|
|
189
|
+
id: WorktreeId,
|
|
190
|
+
workspaceId: WorkspaceId,
|
|
191
|
+
runId: RunId,
|
|
192
|
+
taskId: Schema3.NullOr(TaskId),
|
|
193
|
+
branchName: TrimmedNonEmptyString,
|
|
194
|
+
path: TrimmedNonEmptyString,
|
|
195
|
+
status: TrimmedNonEmptyString,
|
|
196
|
+
createdAt: IsoDateTime,
|
|
197
|
+
cleanedAt: Schema3.NullOr(IsoDateTime)
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// packages/contracts/src/supervisor-journal.ts
|
|
201
|
+
var SupervisorStopReason = Schema4.Literals([
|
|
202
|
+
"all-done",
|
|
203
|
+
"all-human-blocked",
|
|
204
|
+
"blocked",
|
|
205
|
+
"work-pending",
|
|
206
|
+
"max-tasks",
|
|
207
|
+
"budget",
|
|
208
|
+
"judge-stop",
|
|
209
|
+
"operator-stop",
|
|
210
|
+
"source-error"
|
|
211
|
+
]);
|
|
212
|
+
var SupervisorSelectionPolicy = Schema4.Literals(["rank", "max-unblock", "blocking-only"]);
|
|
213
|
+
var SupervisorStatus = Schema4.Literals(["running", "idle", "stopped", "finished"]);
|
|
214
|
+
var TaskClosureSummary = Schema4.Struct({
|
|
215
|
+
taskId: TaskId,
|
|
216
|
+
runId: RunId,
|
|
217
|
+
prUrl: Schema4.NullOr(Schema4.String),
|
|
218
|
+
mergeGate: Schema4.NullOr(Schema4.Literals(["passed", "blocked", "skipped"])),
|
|
219
|
+
acceptanceChecked: Schema4.Array(Schema4.Struct({
|
|
220
|
+
item: Schema4.String,
|
|
221
|
+
met: Schema4.Boolean
|
|
222
|
+
})),
|
|
223
|
+
unblockedTaskIds: Schema4.Array(TaskId)
|
|
224
|
+
});
|
|
225
|
+
var SupervisorStartedEvent = Schema4.Struct({
|
|
226
|
+
kind: Schema4.Literal("supervisor.started"),
|
|
227
|
+
at: IsoDateTime,
|
|
228
|
+
options: Schema4.Unknown
|
|
229
|
+
});
|
|
230
|
+
var SupervisorSelectionPlannedEvent = Schema4.Struct({
|
|
231
|
+
kind: Schema4.Literal("supervisor.selection-planned"),
|
|
232
|
+
at: IsoDateTime,
|
|
233
|
+
taskIds: Schema4.Array(TaskId),
|
|
234
|
+
policy: SupervisorSelectionPolicy
|
|
235
|
+
});
|
|
236
|
+
var SupervisorDispatchStartedEvent = Schema4.Struct({
|
|
237
|
+
kind: Schema4.Literal("supervisor.dispatch-started"),
|
|
238
|
+
at: IsoDateTime,
|
|
239
|
+
taskId: TaskId,
|
|
240
|
+
score: NonNegativeInt
|
|
241
|
+
});
|
|
242
|
+
var SupervisorDispatchConfirmedEvent = Schema4.Struct({
|
|
243
|
+
kind: Schema4.Literal("supervisor.dispatch-confirmed"),
|
|
244
|
+
at: IsoDateTime,
|
|
245
|
+
taskId: TaskId,
|
|
246
|
+
runId: RunId,
|
|
247
|
+
dispatchHandle: Schema4.optional(Schema4.NullOr(Schema4.String))
|
|
248
|
+
});
|
|
249
|
+
var SupervisorDispatchEvent = Schema4.Struct({
|
|
250
|
+
kind: Schema4.Literal("supervisor.dispatch"),
|
|
251
|
+
at: IsoDateTime,
|
|
252
|
+
taskId: TaskId,
|
|
253
|
+
runId: RunId,
|
|
254
|
+
score: NonNegativeInt,
|
|
255
|
+
dispatchHandle: Schema4.optional(Schema4.NullOr(Schema4.String))
|
|
256
|
+
});
|
|
257
|
+
var SupervisorOutcomeEvent = Schema4.Struct({
|
|
258
|
+
kind: Schema4.Literal("supervisor.outcome"),
|
|
259
|
+
at: IsoDateTime,
|
|
260
|
+
taskId: TaskId,
|
|
261
|
+
runId: RunId,
|
|
262
|
+
status: RunStatus,
|
|
263
|
+
failed: Schema4.Boolean,
|
|
264
|
+
unblockedTaskIds: Schema4.Array(TaskId),
|
|
265
|
+
closure: Schema4.optional(TaskClosureSummary)
|
|
266
|
+
});
|
|
267
|
+
var SupervisorSkippedEvent = Schema4.Struct({
|
|
268
|
+
kind: Schema4.Literal("supervisor.skipped"),
|
|
269
|
+
at: IsoDateTime,
|
|
270
|
+
taskId: TaskId,
|
|
271
|
+
reason: Schema4.String
|
|
272
|
+
});
|
|
273
|
+
var SupervisorIdleEvent = Schema4.Struct({
|
|
274
|
+
kind: Schema4.Literal("supervisor.idle"),
|
|
275
|
+
at: IsoDateTime,
|
|
276
|
+
reason: SupervisorStopReason
|
|
277
|
+
});
|
|
278
|
+
var SupervisorStoppedEvent = Schema4.Struct({
|
|
279
|
+
kind: Schema4.Literal("supervisor.stopped"),
|
|
280
|
+
at: IsoDateTime,
|
|
281
|
+
reason: SupervisorStopReason
|
|
282
|
+
});
|
|
283
|
+
var SupervisorFinishedEvent = Schema4.Struct({
|
|
284
|
+
kind: Schema4.Literal("supervisor.finished"),
|
|
285
|
+
at: IsoDateTime,
|
|
286
|
+
processed: NonNegativeInt,
|
|
287
|
+
succeeded: NonNegativeInt,
|
|
288
|
+
failed: NonNegativeInt,
|
|
289
|
+
skipped: Schema4.optional(NonNegativeInt),
|
|
290
|
+
idleReason: Schema4.NullOr(SupervisorStopReason)
|
|
291
|
+
});
|
|
292
|
+
var SupervisorEvent = Schema4.Union([
|
|
293
|
+
SupervisorStartedEvent,
|
|
294
|
+
SupervisorSelectionPlannedEvent,
|
|
295
|
+
SupervisorDispatchStartedEvent,
|
|
296
|
+
SupervisorDispatchConfirmedEvent,
|
|
297
|
+
SupervisorDispatchEvent,
|
|
298
|
+
SupervisorOutcomeEvent,
|
|
299
|
+
SupervisorSkippedEvent,
|
|
300
|
+
SupervisorIdleEvent,
|
|
301
|
+
SupervisorStoppedEvent,
|
|
302
|
+
SupervisorFinishedEvent
|
|
303
|
+
]);
|
|
304
|
+
var SupervisorProjection = Schema4.Struct({
|
|
305
|
+
status: SupervisorStatus,
|
|
306
|
+
processed: NonNegativeInt,
|
|
307
|
+
succeeded: NonNegativeInt,
|
|
308
|
+
failed: NonNegativeInt,
|
|
309
|
+
skipped: NonNegativeInt,
|
|
310
|
+
current: Schema4.NullOr(Schema4.Struct({ taskId: TaskId, runId: RunId })),
|
|
311
|
+
plannedOrder: Schema4.Array(TaskId),
|
|
312
|
+
selectionPolicy: Schema4.NullOr(SupervisorSelectionPolicy),
|
|
313
|
+
concurrency: Schema4.NullOr(NonNegativeInt),
|
|
314
|
+
idleReason: Schema4.NullOr(SupervisorStopReason),
|
|
315
|
+
stopReason: Schema4.NullOr(SupervisorStopReason),
|
|
316
|
+
closures: Schema4.Array(TaskClosureSummary),
|
|
317
|
+
anomalies: Schema4.Array(Schema4.String)
|
|
318
|
+
});
|
|
319
|
+
export {
|
|
320
|
+
TaskClosureSummary,
|
|
321
|
+
SupervisorStoppedEvent,
|
|
322
|
+
SupervisorStopReason,
|
|
323
|
+
SupervisorStatus,
|
|
324
|
+
SupervisorStartedEvent,
|
|
325
|
+
SupervisorSkippedEvent,
|
|
326
|
+
SupervisorSelectionPolicy,
|
|
327
|
+
SupervisorSelectionPlannedEvent,
|
|
328
|
+
SupervisorProjection,
|
|
329
|
+
SupervisorOutcomeEvent,
|
|
330
|
+
SupervisorIdleEvent,
|
|
331
|
+
SupervisorFinishedEvent,
|
|
332
|
+
SupervisorEvent,
|
|
333
|
+
SupervisorDispatchStartedEvent,
|
|
334
|
+
SupervisorDispatchEvent,
|
|
335
|
+
SupervisorDispatchConfirmedEvent
|
|
336
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* supervisor-loop.ts — typed service boundary for autonomous supervisor control.
|
|
3
|
+
*
|
|
4
|
+
* The supervisor plugin owns loop orchestration. Its implementation resolves the
|
|
5
|
+
* scheduler RUN_QUEUE, run read-model, and transport dispatch capabilities rather
|
|
6
|
+
* than making CLI surfaces assemble those cross-package decisions.
|
|
7
|
+
*/
|
|
8
|
+
import type { CapabilityId } from "./capability-id";
|
|
9
|
+
import type { SupervisorEvent, SupervisorProjection, SupervisorSelectionPolicy } from "./supervisor-journal";
|
|
10
|
+
export interface SupervisorLoopRunInput {
|
|
11
|
+
readonly projectRoot: string;
|
|
12
|
+
readonly maxTasks?: number;
|
|
13
|
+
readonly concurrency?: number;
|
|
14
|
+
readonly selectionPolicy?: SupervisorSelectionPolicy;
|
|
15
|
+
readonly candidateTaskIds?: Iterable<string>;
|
|
16
|
+
readonly excludeTaskIds?: Iterable<string>;
|
|
17
|
+
readonly dryRun?: boolean;
|
|
18
|
+
readonly model?: string | null;
|
|
19
|
+
readonly force?: boolean;
|
|
20
|
+
readonly timeoutMs?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface SupervisorLoopUnblockInput {
|
|
23
|
+
readonly projectRoot: string;
|
|
24
|
+
readonly taskId?: string | null;
|
|
25
|
+
readonly dryRun?: boolean;
|
|
26
|
+
readonly timeoutMs?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface SupervisorLoopResult {
|
|
29
|
+
readonly ok: boolean;
|
|
30
|
+
readonly dryRun: boolean;
|
|
31
|
+
readonly plannedOrder: readonly string[];
|
|
32
|
+
readonly events: readonly SupervisorEvent[];
|
|
33
|
+
readonly projection: SupervisorProjection;
|
|
34
|
+
}
|
|
35
|
+
export interface SupervisorLoopService {
|
|
36
|
+
readonly runLoop: (input: SupervisorLoopRunInput) => Promise<SupervisorLoopResult>;
|
|
37
|
+
readonly unblock: (input: SupervisorLoopUnblockInput) => Promise<SupervisorLoopResult>;
|
|
38
|
+
}
|
|
39
|
+
export declare const SUPERVISOR_LOOP_CAPABILITY_ID = "rig.supervisor.loop";
|
|
40
|
+
export declare const SUPERVISOR_LOOP: CapabilityId<SupervisorLoopService>;
|
|
@@ -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/supervisor-loop.ts
|
|
8
|
+
var SUPERVISOR_LOOP_CAPABILITY_ID = "rig.supervisor.loop";
|
|
9
|
+
var SUPERVISOR_LOOP = makeCapabilityId(SUPERVISOR_LOOP_CAPABILITY_ID);
|
|
10
|
+
export {
|
|
11
|
+
SUPERVISOR_LOOP_CAPABILITY_ID,
|
|
12
|
+
SUPERVISOR_LOOP
|
|
13
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { CapabilityId } from "./capability-id";
|
|
2
|
+
import type { TaskArtifactReadResult } from "./task-data";
|
|
3
|
+
export type TaskArtifactRef = {
|
|
4
|
+
readonly projectRoot: string;
|
|
5
|
+
readonly taskId?: string;
|
|
6
|
+
};
|
|
7
|
+
export type TaskArtifactListEntry = {
|
|
8
|
+
readonly path: string;
|
|
9
|
+
readonly sizeBytes: number;
|
|
10
|
+
readonly kind: "file" | "directory" | "other";
|
|
11
|
+
readonly modifiedAt?: string | null;
|
|
12
|
+
};
|
|
13
|
+
export type TaskArtifactWriteInput = TaskArtifactRef & {
|
|
14
|
+
readonly filename: string;
|
|
15
|
+
readonly content: string;
|
|
16
|
+
};
|
|
17
|
+
export type TaskArtifactReadInput = TaskArtifactRef & {
|
|
18
|
+
readonly filename: string;
|
|
19
|
+
readonly maxBytes?: number;
|
|
20
|
+
};
|
|
21
|
+
export type TaskArtifactWriteResult = {
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly sizeBytes: number;
|
|
24
|
+
};
|
|
25
|
+
export type TaskDecisionAppendInput = TaskArtifactRef & {
|
|
26
|
+
readonly text: string;
|
|
27
|
+
readonly timestamp?: string;
|
|
28
|
+
};
|
|
29
|
+
export type TaskDecisionAppendResult = {
|
|
30
|
+
readonly taskId: string;
|
|
31
|
+
readonly path: string;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
};
|
|
34
|
+
export type TaskCompletionArtifactsPrepareInput = TaskArtifactRef & {
|
|
35
|
+
readonly changedFiles: readonly string[];
|
|
36
|
+
readonly completedAt?: string;
|
|
37
|
+
};
|
|
38
|
+
export type TaskCompletionArtifactsPrepareResult = {
|
|
39
|
+
readonly taskId: string;
|
|
40
|
+
readonly artifactDir: string;
|
|
41
|
+
readonly message: string;
|
|
42
|
+
};
|
|
43
|
+
/** Task artifact directory/list/read/write vocabulary. */
|
|
44
|
+
export interface TaskArtifactsService {
|
|
45
|
+
artifactDir(input: TaskArtifactRef): string;
|
|
46
|
+
listArtifacts(input: TaskArtifactRef): Promise<readonly TaskArtifactListEntry[]>;
|
|
47
|
+
readArtifact(input: TaskArtifactReadInput): Promise<TaskArtifactReadResult>;
|
|
48
|
+
writeArtifact(input: TaskArtifactWriteInput): Promise<TaskArtifactWriteResult>;
|
|
49
|
+
appendDecision(input: TaskDecisionAppendInput): Promise<TaskDecisionAppendResult>;
|
|
50
|
+
prepareCompletionArtifacts(input: TaskCompletionArtifactsPrepareInput): Promise<TaskCompletionArtifactsPrepareResult>;
|
|
51
|
+
}
|
|
52
|
+
export declare const TASK_ARTIFACTS_CAPABILITY_ID = "task-state.artifacts";
|
|
53
|
+
export declare const TASK_ARTIFACTS: CapabilityId<TaskArtifactsService>;
|
|
@@ -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/task-artifacts.ts
|
|
8
|
+
var TASK_ARTIFACTS_CAPABILITY_ID = "task-state.artifacts";
|
|
9
|
+
var TASK_ARTIFACTS = makeCapabilityId(TASK_ARTIFACTS_CAPABILITY_ID);
|
|
10
|
+
export {
|
|
11
|
+
TASK_ARTIFACTS_CAPABILITY_ID,
|
|
12
|
+
TASK_ARTIFACTS
|
|
13
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* task-config.ts - floor-neutral local task config entry vocabulary.
|
|
3
|
+
*
|
|
4
|
+
* The shape is shared by task-state/task-io compatibility paths, but read,
|
|
5
|
+
* write, normalization, and source materialization policy are owned by plugins.
|
|
6
|
+
*/
|
|
7
|
+
import type { TaskBrowserConfig } from "./browser";
|
|
8
|
+
export type TaskConfigEntry = {
|
|
9
|
+
title?: string;
|
|
10
|
+
status?: string;
|
|
11
|
+
role?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
acceptance_criteria?: string;
|
|
14
|
+
scope?: string[];
|
|
15
|
+
validation?: string[];
|
|
16
|
+
browser?: TaskBrowserConfig;
|
|
17
|
+
repo_pins?: Record<string, string>;
|
|
18
|
+
criticality?: "core" | "high" | "normal";
|
|
19
|
+
queue_weight?: number;
|
|
20
|
+
creates_repo?: boolean;
|
|
21
|
+
auto_synced?: boolean;
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// @bun
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CapabilityId } from "./capability-id";
|
|
2
|
+
import type { RuntimeInstructionProvider } from "./provider-instructions";
|
|
3
|
+
import type { RigTask, TaskRecord } from "./task-source";
|
|
4
|
+
export type TaskContextRenderInput = {
|
|
5
|
+
readonly projectRoot: string;
|
|
6
|
+
readonly taskId?: string;
|
|
7
|
+
readonly task?: RigTask | TaskRecord | null;
|
|
8
|
+
readonly provider?: RuntimeInstructionProvider;
|
|
9
|
+
};
|
|
10
|
+
export type TaskScopeRenderInput = TaskContextRenderInput & {
|
|
11
|
+
readonly expandFiles?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type TaskPromptContextSection = {
|
|
14
|
+
readonly title: string;
|
|
15
|
+
readonly content: string;
|
|
16
|
+
};
|
|
17
|
+
export type TaskPromptContext = {
|
|
18
|
+
readonly taskId: string | null;
|
|
19
|
+
readonly sections: readonly TaskPromptContextSection[];
|
|
20
|
+
};
|
|
21
|
+
/** Provider/prompt-owned task info, scope, and dependency rendering vocabulary. */
|
|
22
|
+
export interface TaskContextRendererService {
|
|
23
|
+
renderTaskInfo(input: TaskContextRenderInput): Promise<TaskPromptContextSection>;
|
|
24
|
+
renderTaskScope(input: TaskScopeRenderInput): Promise<TaskPromptContextSection>;
|
|
25
|
+
renderTaskDependencies(input: TaskContextRenderInput): Promise<TaskPromptContextSection>;
|
|
26
|
+
renderPromptContext(input: TaskContextRenderInput): Promise<TaskPromptContext>;
|
|
27
|
+
}
|
|
28
|
+
export declare const TASK_CONTEXT_RENDERER_CAPABILITY_ID = "provider.task-context-renderer";
|
|
29
|
+
export declare const TASK_CONTEXT_RENDERER: CapabilityId<TaskContextRendererService>;
|
|
@@ -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/task-context-renderer.ts
|
|
8
|
+
var TASK_CONTEXT_RENDERER_CAPABILITY_ID = "provider.task-context-renderer";
|
|
9
|
+
var TASK_CONTEXT_RENDERER = makeCapabilityId(TASK_CONTEXT_RENDERER_CAPABILITY_ID);
|
|
10
|
+
export {
|
|
11
|
+
TASK_CONTEXT_RENDERER_CAPABILITY_ID,
|
|
12
|
+
TASK_CONTEXT_RENDERER
|
|
13
|
+
};
|