@overdeck/contracts 0.61.0 → 0.62.1
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 +439 -95
- package/dist/index.d.ts +773 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +418 -96
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -16,7 +16,8 @@ const BackendPane = Schema.Struct({
|
|
|
16
16
|
"test",
|
|
17
17
|
"uat",
|
|
18
18
|
"strike",
|
|
19
|
-
"plan"
|
|
19
|
+
"plan",
|
|
20
|
+
"conversation"
|
|
20
21
|
]),
|
|
21
22
|
harness: Schema.String,
|
|
22
23
|
model: Schema.String,
|
|
@@ -147,9 +148,17 @@ const MEMBERSHIP_UNAVAILABLE_REASONS = [
|
|
|
147
148
|
"repo_unavailable",
|
|
148
149
|
"default_branch_unresolved",
|
|
149
150
|
"forge_unavailable",
|
|
151
|
+
"forge_transient",
|
|
150
152
|
"tracker_unconfigured",
|
|
151
153
|
"gather_failed"
|
|
152
154
|
];
|
|
155
|
+
/**
|
|
156
|
+
* PAN-3527 — the membership snapshot has not been gathered yet (a freshly
|
|
157
|
+
* restarted server warming its cache). Sent with HTTP 503 and a `Retry-After`
|
|
158
|
+
* header. Unlike `PipelineMembershipUnavailableBody` (a settled answer about
|
|
159
|
+
* the project), this is a temporary state: callers retry it.
|
|
160
|
+
*/
|
|
161
|
+
const PIPELINE_MEMBERSHIP_LOADING_CODE = "snapshot_loading";
|
|
153
162
|
const AgentId = Schema.String;
|
|
154
163
|
const SequenceNumber = Schema.Number;
|
|
155
164
|
const AgentStatus = Schema.Literals([
|
|
@@ -328,6 +337,12 @@ const AgentSnapshot = Schema.Struct({
|
|
|
328
337
|
phase: Schema.optional(Schema.String),
|
|
329
338
|
workType: Schema.optional(Schema.String),
|
|
330
339
|
roleRunHead: Schema.optional(Schema.String),
|
|
340
|
+
/** The agent has a live pane on its terminal backend (Herdr or tmux). */
|
|
341
|
+
hasLivePane: Schema.optional(Schema.Boolean),
|
|
342
|
+
/**
|
|
343
|
+
* @deprecated Misnamed alias of `hasLivePane`: true for a live pane on either
|
|
344
|
+
* backend, not only a tmux session. Still populated for compatibility (#4105).
|
|
345
|
+
*/
|
|
331
346
|
hasLiveTmuxSession: Schema.optional(Schema.Boolean),
|
|
332
347
|
stoppedByUser: Schema.optional(Schema.Boolean),
|
|
333
348
|
paused: Schema.optional(Schema.Boolean),
|
|
@@ -442,6 +457,39 @@ const ProjectCiSnapshot = Schema.Struct({
|
|
|
442
457
|
/** Newest `observedAt` folded into this record. */
|
|
443
458
|
updatedAt: Schema.String
|
|
444
459
|
});
|
|
460
|
+
/**
|
|
461
|
+
* Where an in-flight dashboard self-deploy (`pan reload`) stands.
|
|
462
|
+
*
|
|
463
|
+
* `building` the reload holds the restart lock and is building from origin/main;
|
|
464
|
+
* `awaiting-approval` the build is ready and the reload waits on the restart gate;
|
|
465
|
+
* `restarting` the operator approved and the old dashboard is being replaced;
|
|
466
|
+
* `failed` the last reload recorded a failure (visible for a short window).
|
|
467
|
+
*/
|
|
468
|
+
const ProjectDeployPhase = Schema.Literals([
|
|
469
|
+
"building",
|
|
470
|
+
"awaiting-approval",
|
|
471
|
+
"restarting",
|
|
472
|
+
"failed"
|
|
473
|
+
]);
|
|
474
|
+
/**
|
|
475
|
+
* One project's deploy, derived on the server from live runtime files: the
|
|
476
|
+
* restart lock, the restart gate, the restart-status journal and the reload
|
|
477
|
+
* process's own stdout. Nothing here is stored; a server restart re-derives it.
|
|
478
|
+
*/
|
|
479
|
+
const ProjectDeploySnapshot = Schema.Struct({
|
|
480
|
+
projectKey: Schema.String,
|
|
481
|
+
trigger: Schema.String,
|
|
482
|
+
phase: ProjectDeployPhase,
|
|
483
|
+
/** The deploying process, while it is alive. */
|
|
484
|
+
pid: Schema.optional(Schema.Number),
|
|
485
|
+
/** When the server first observed this deploy (for `failed`, when it failed). */
|
|
486
|
+
startedAt: Schema.String,
|
|
487
|
+
error: Schema.optional(Schema.String),
|
|
488
|
+
/** The reload's output file, when its stdout is a regular file. */
|
|
489
|
+
logPath: Schema.optional(Schema.String),
|
|
490
|
+
/** Last lines of `logPath`. */
|
|
491
|
+
logTail: Schema.optional(Schema.Array(Schema.String))
|
|
492
|
+
});
|
|
445
493
|
/** What kind of process asked for the voluntary dashboard restart. */
|
|
446
494
|
const RestartGateKind = Schema.Literals([
|
|
447
495
|
"deploy",
|
|
@@ -511,6 +559,8 @@ const DashboardSnapshot = Schema.Struct({
|
|
|
511
559
|
embedProgressBySessionId: Schema.optional(Schema.Record(Schema.String, EmbedProgressSnapshot)),
|
|
512
560
|
ciByProjectKey: Schema.optional(Schema.Record(Schema.String, ProjectCiSnapshot)),
|
|
513
561
|
restartGate: Schema.optional(RestartGateSnapshot),
|
|
562
|
+
/** PAN-3751 — in-flight deploys keyed by project key. */
|
|
563
|
+
deployByProjectKey: Schema.optional(Schema.Record(Schema.String, ProjectDeploySnapshot)),
|
|
514
564
|
timestamp: Schema.String
|
|
515
565
|
});
|
|
516
566
|
const ResourceStats = Schema.Struct({ containers: Schema.Array(Schema.Struct({
|
|
@@ -765,6 +815,95 @@ const ScanResult = Schema.Struct({
|
|
|
765
815
|
durationMs: Schema.Number
|
|
766
816
|
});
|
|
767
817
|
//#endregion
|
|
818
|
+
//#region src/pull-request-links.ts
|
|
819
|
+
const PullRequestLinkSource = Schema.Literals([
|
|
820
|
+
"manual",
|
|
821
|
+
"agent",
|
|
822
|
+
"created",
|
|
823
|
+
"branch"
|
|
824
|
+
]);
|
|
825
|
+
const PullRequestKey = Schema.Struct({
|
|
826
|
+
host: Schema.String,
|
|
827
|
+
repository: Schema.String,
|
|
828
|
+
number: Schema.Number
|
|
829
|
+
});
|
|
830
|
+
const PullRequestState = Schema.Literals([
|
|
831
|
+
"open",
|
|
832
|
+
"merged",
|
|
833
|
+
"closed"
|
|
834
|
+
]);
|
|
835
|
+
const PullRequestSnapshot = Schema.Struct({
|
|
836
|
+
state: PullRequestState,
|
|
837
|
+
isDraft: Schema.Boolean,
|
|
838
|
+
title: Schema.String,
|
|
839
|
+
headBranch: Schema.NullOr(Schema.String),
|
|
840
|
+
baseBranch: Schema.NullOr(Schema.String),
|
|
841
|
+
reviewState: PrReviewState,
|
|
842
|
+
checks: PrChecksState,
|
|
843
|
+
mergeable: Schema.NullOr(Schema.Boolean),
|
|
844
|
+
additions: Schema.NullOr(Schema.Number),
|
|
845
|
+
deletions: Schema.NullOr(Schema.Number),
|
|
846
|
+
changedFiles: Schema.NullOr(Schema.Number),
|
|
847
|
+
author: Schema.NullOr(Schema.String),
|
|
848
|
+
/** Forge timestamp, ISO. */
|
|
849
|
+
updatedAt: Schema.NullOr(Schema.String),
|
|
850
|
+
mergedAt: Schema.NullOr(Schema.String),
|
|
851
|
+
closedAt: Schema.NullOr(Schema.String),
|
|
852
|
+
/** When Overdeck last read the PR, ISO. */
|
|
853
|
+
syncedAt: Schema.String
|
|
854
|
+
});
|
|
855
|
+
const PullRequestLink = Schema.Struct({
|
|
856
|
+
...PullRequestKey.fields,
|
|
857
|
+
url: Schema.String,
|
|
858
|
+
source: PullRequestLinkSource,
|
|
859
|
+
linkedAt: Schema.String,
|
|
860
|
+
dismissedAt: Schema.NullOr(Schema.String),
|
|
861
|
+
snapshot: Schema.NullOr(PullRequestSnapshot)
|
|
862
|
+
});
|
|
863
|
+
const ConversationPullRequests = Schema.Struct({
|
|
864
|
+
links: Schema.Array(PullRequestLink),
|
|
865
|
+
effective: Schema.NullOr(PullRequestLink)
|
|
866
|
+
});
|
|
867
|
+
/** One conversation linked to a PR — the reverse index (PR → conversations). */
|
|
868
|
+
const PullRequestLinkedConversation = Schema.Struct({
|
|
869
|
+
/** The /conv/<id> number. */
|
|
870
|
+
id: Schema.Number,
|
|
871
|
+
name: Schema.String,
|
|
872
|
+
title: Schema.NullOr(Schema.String),
|
|
873
|
+
source: PullRequestLinkSource,
|
|
874
|
+
linkedAt: Schema.String
|
|
875
|
+
});
|
|
876
|
+
/** One live link across all conversations, for the Pull requests list. */
|
|
877
|
+
const PullRequestLinkListing = Schema.Struct({
|
|
878
|
+
...PullRequestLink.fields,
|
|
879
|
+
conversationId: Schema.Number,
|
|
880
|
+
conversationName: Schema.String,
|
|
881
|
+
conversationTitle: Schema.NullOr(Schema.String),
|
|
882
|
+
/** The conversation's effective project, or null when none resolves. */
|
|
883
|
+
projectKey: Schema.NullOr(Schema.String)
|
|
884
|
+
});
|
|
885
|
+
function stateRank(link) {
|
|
886
|
+
if (link.snapshot === null) return 1;
|
|
887
|
+
if (link.snapshot.state === "open") return 0;
|
|
888
|
+
if (link.snapshot.state === "merged") return 2;
|
|
889
|
+
return 3;
|
|
890
|
+
}
|
|
891
|
+
function recency(link) {
|
|
892
|
+
return Date.parse(link.snapshot?.updatedAt ?? link.linkedAt) || 0;
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* The one PR shown on a conversation: explicit links before branch links,
|
|
896
|
+
* open before merged before closed, most recently updated among equals.
|
|
897
|
+
* Dismissed links never count.
|
|
898
|
+
*/
|
|
899
|
+
function resolveEffectivePullRequest(links) {
|
|
900
|
+
const live = links.filter((link) => link.dismissedAt === null);
|
|
901
|
+
const explicit = live.filter((link) => link.source !== "branch");
|
|
902
|
+
const pool = explicit.length > 0 ? explicit : live;
|
|
903
|
+
if (pool.length === 0) return null;
|
|
904
|
+
return [...pool].sort((a, b) => stateRank(a) - stateRank(b) || recency(b) - recency(a))[0] ?? null;
|
|
905
|
+
}
|
|
906
|
+
//#endregion
|
|
768
907
|
//#region src/memory.ts
|
|
769
908
|
const MemoryAgentRole = Schema.Union([Role, Schema.Literal("conversation")]);
|
|
770
909
|
const MemoryIdentity = Schema.Struct({
|
|
@@ -1022,6 +1161,9 @@ const AgentHealthSnapshot = Schema.Struct({
|
|
|
1022
1161
|
kind: Schema.optional(AgentHealthKind),
|
|
1023
1162
|
status: AgentHealthStatus,
|
|
1024
1163
|
lifecycle: Schema.optional(SpecialistLifecycle),
|
|
1164
|
+
/** The agent has a live pane on the selected terminal backend (Herdr or tmux). */
|
|
1165
|
+
hasLivePane: Schema.optional(Schema.Boolean),
|
|
1166
|
+
/** @deprecated Alias of `hasLivePane` kept for existing readers; true on either backend, not only tmux. */
|
|
1025
1167
|
tmuxActive: Schema.optional(Schema.Boolean),
|
|
1026
1168
|
memoryBytes: Schema.optional(Schema.Number),
|
|
1027
1169
|
memoryGb: Schema.optional(Schema.Number),
|
|
@@ -1289,6 +1431,20 @@ const RestartGateChangedEvent = Schema.Struct({
|
|
|
1289
1431
|
timestamp: Schema.String,
|
|
1290
1432
|
payload: RestartGateSnapshot
|
|
1291
1433
|
});
|
|
1434
|
+
/**
|
|
1435
|
+
* The set of in-flight project deploys changed (PAN-3751).
|
|
1436
|
+
*
|
|
1437
|
+
* The payload is the COMPLETE projection keyed by project key, so the reducer
|
|
1438
|
+
* is a plain replace. The server derives it from runtime files (restart lock,
|
|
1439
|
+
* restart gate, restart-status journal) and emits it in-memory only, like
|
|
1440
|
+
* `restart_gate.changed`: it is never persisted and never replayed at boot.
|
|
1441
|
+
*/
|
|
1442
|
+
const ProjectDeployChangedEvent = Schema.Struct({
|
|
1443
|
+
type: Schema.Literal("project.deploy_changed"),
|
|
1444
|
+
sequence: SequenceNumber,
|
|
1445
|
+
timestamp: Schema.String,
|
|
1446
|
+
payload: Schema.Struct({ deploys: Schema.Record(Schema.String, ProjectDeploySnapshot) })
|
|
1447
|
+
});
|
|
1292
1448
|
/** Replaces socket.io `agents:changed` (event: 'started') */
|
|
1293
1449
|
const AgentStartedEvent = Schema.Struct({
|
|
1294
1450
|
type: Schema.Literal("agent.started"),
|
|
@@ -1378,6 +1534,9 @@ const AgentStatusChangedEvent = Schema.Struct({
|
|
|
1378
1534
|
workspaceId: Schema.optional(Schema.String),
|
|
1379
1535
|
status: AgentStatus,
|
|
1380
1536
|
previousStatus: Schema.optional(AgentStatus),
|
|
1537
|
+
/** The agent has a live pane on its terminal backend (Herdr or tmux). */
|
|
1538
|
+
hasLivePane: Schema.optional(Schema.Boolean),
|
|
1539
|
+
/** @deprecated Alias of `hasLivePane`, kept for events written before it existed (#4105). */
|
|
1381
1540
|
hasLiveTmuxSession: Schema.optional(Schema.Boolean),
|
|
1382
1541
|
stoppedByUser: Schema.optional(Schema.Boolean),
|
|
1383
1542
|
stoppedByPause: Schema.optional(Schema.Boolean),
|
|
@@ -2444,6 +2603,17 @@ const ConversationTitleChangedEvent = Schema.Struct({
|
|
|
2444
2603
|
titleSource: Schema.String
|
|
2445
2604
|
})
|
|
2446
2605
|
});
|
|
2606
|
+
/** Emitted (in-memory only) when a conversation's pull-request links or their
|
|
2607
|
+
* snapshots change (PAN-3822), so the list and open panel refresh the badge. */
|
|
2608
|
+
const ConversationPullRequestsChangedEvent = Schema.Struct({
|
|
2609
|
+
type: Schema.Literal("conversation.pull_requests_changed"),
|
|
2610
|
+
sequence: SequenceNumber,
|
|
2611
|
+
timestamp: Schema.String,
|
|
2612
|
+
payload: Schema.Struct({
|
|
2613
|
+
conversationName: Schema.String,
|
|
2614
|
+
effective: Schema.NullOr(PullRequestLink)
|
|
2615
|
+
})
|
|
2616
|
+
});
|
|
2447
2617
|
/** Emitted (in-memory only) when a PermissionRequest hook fires or resolves for a conversation. */
|
|
2448
2618
|
const ConversationPermissionChangedEvent = Schema.Struct({
|
|
2449
2619
|
type: Schema.Literal("conversation.permission_changed"),
|
|
@@ -2578,6 +2748,7 @@ const DomainEvent = Schema.Union([
|
|
|
2578
2748
|
ProjectCiSuiteObservedEvent,
|
|
2579
2749
|
ProjectCiHeadObservedEvent,
|
|
2580
2750
|
RestartGateChangedEvent,
|
|
2751
|
+
ProjectDeployChangedEvent,
|
|
2581
2752
|
AgentCreatedEvent,
|
|
2582
2753
|
AgentEnrichmentChangedEvent,
|
|
2583
2754
|
AgentStartedEvent,
|
|
@@ -2668,6 +2839,7 @@ const DomainEvent = Schema.Union([
|
|
|
2668
2839
|
ConversationCreatedEvent,
|
|
2669
2840
|
ConversationMovedEvent,
|
|
2670
2841
|
ConversationTitleChangedEvent,
|
|
2842
|
+
ConversationPullRequestsChangedEvent,
|
|
2671
2843
|
ConversationPermissionChangedEvent,
|
|
2672
2844
|
ScanStartedEvent,
|
|
2673
2845
|
ScanProgressEvent,
|
|
@@ -3481,6 +3653,7 @@ const INITIAL_READ_MODEL_STATE = {
|
|
|
3481
3653
|
embedProgressBySessionId: {},
|
|
3482
3654
|
ciByProjectKey: {},
|
|
3483
3655
|
restartGate: null,
|
|
3656
|
+
deployByProjectKey: {},
|
|
3484
3657
|
agentIdBySessionId: {},
|
|
3485
3658
|
dashboardLifecycle: {
|
|
3486
3659
|
active: false,
|
|
@@ -3611,14 +3784,29 @@ function syncSnapshot(state, snapshot) {
|
|
|
3611
3784
|
embedProgressBySessionId: snapshot.embedProgressBySessionId ?? {},
|
|
3612
3785
|
ciByProjectKey: snapshot.ciByProjectKey ?? state.ciByProjectKey,
|
|
3613
3786
|
restartGate: snapshot.restartGate ?? state.restartGate,
|
|
3787
|
+
deployByProjectKey: snapshot.deployByProjectKey ?? state.deployByProjectKey,
|
|
3614
3788
|
agentIdBySessionId
|
|
3615
3789
|
};
|
|
3616
3790
|
}
|
|
3791
|
+
/**
|
|
3792
|
+
* #4105 — `hasLivePane` and its deprecated alias `hasLiveTmuxSession` carry one
|
|
3793
|
+
* fact. An agent snapshot from a stored event may carry only the old name; fill
|
|
3794
|
+
* whichever one is missing so readers of either name agree.
|
|
3795
|
+
*/
|
|
3796
|
+
function withPaneLivenessAlias(agent) {
|
|
3797
|
+
const pane = agent.hasLivePane ?? agent.hasLiveTmuxSession;
|
|
3798
|
+
if (pane === void 0 || agent.hasLivePane === pane && agent.hasLiveTmuxSession === pane) return agent;
|
|
3799
|
+
return {
|
|
3800
|
+
...agent,
|
|
3801
|
+
hasLivePane: pane,
|
|
3802
|
+
hasLiveTmuxSession: pane
|
|
3803
|
+
};
|
|
3804
|
+
}
|
|
3617
3805
|
function applyEvent(state, event) {
|
|
3618
3806
|
switch (event.type) {
|
|
3619
3807
|
case "agent.created": {
|
|
3620
3808
|
const existing = state.agentsById[event.payload.agentId];
|
|
3621
|
-
const agent = event.payload.agent;
|
|
3809
|
+
const agent = withPaneLivenessAlias(event.payload.agent);
|
|
3622
3810
|
const nextAgentIdBySessionId = agent.sessionId ? {
|
|
3623
3811
|
...state.agentIdBySessionId,
|
|
3624
3812
|
[agent.sessionId]: agent.id
|
|
@@ -3637,7 +3825,7 @@ function applyEvent(state, event) {
|
|
|
3637
3825
|
};
|
|
3638
3826
|
}
|
|
3639
3827
|
case "agent.started": {
|
|
3640
|
-
const agent = event.payload.agent;
|
|
3828
|
+
const agent = withPaneLivenessAlias(event.payload.agent);
|
|
3641
3829
|
const nextAgentIdBySessionId = agent.sessionId ? {
|
|
3642
3830
|
...state.agentIdBySessionId,
|
|
3643
3831
|
[agent.sessionId]: agent.id
|
|
@@ -3687,6 +3875,7 @@ function applyEvent(state, event) {
|
|
|
3687
3875
|
[event.payload.agentId]: {
|
|
3688
3876
|
...stoppedAgent,
|
|
3689
3877
|
status: "stopped",
|
|
3878
|
+
hasLivePane: false,
|
|
3690
3879
|
hasLiveTmuxSession: false,
|
|
3691
3880
|
lastActivity: event.timestamp
|
|
3692
3881
|
}
|
|
@@ -3748,6 +3937,7 @@ function applyEvent(state, event) {
|
|
|
3748
3937
|
status: event.payload.status
|
|
3749
3938
|
};
|
|
3750
3939
|
for (const field of [
|
|
3940
|
+
"hasLivePane",
|
|
3751
3941
|
"hasLiveTmuxSession",
|
|
3752
3942
|
"stoppedByUser",
|
|
3753
3943
|
"stoppedByPause",
|
|
@@ -3792,7 +3982,15 @@ function applyEvent(state, event) {
|
|
|
3792
3982
|
if (value === null || value === void 0) delete base[field];
|
|
3793
3983
|
else base[field] = value;
|
|
3794
3984
|
}
|
|
3795
|
-
const
|
|
3985
|
+
const payloadPane = event.payload.hasLivePane ?? event.payload.hasLiveTmuxSession;
|
|
3986
|
+
if ("hasLivePane" in event.payload || "hasLiveTmuxSession" in event.payload) if (payloadPane === null || payloadPane === void 0) {
|
|
3987
|
+
delete base["hasLivePane"];
|
|
3988
|
+
delete base["hasLiveTmuxSession"];
|
|
3989
|
+
} else {
|
|
3990
|
+
base["hasLivePane"] = payloadPane;
|
|
3991
|
+
base["hasLiveTmuxSession"] = payloadPane;
|
|
3992
|
+
}
|
|
3993
|
+
const sessionAlive = payloadPane === true;
|
|
3796
3994
|
if (event.payload.status !== "running" && event.payload.status !== "starting" && !sessionAlive) {
|
|
3797
3995
|
delete base["hasPendingQuestion"];
|
|
3798
3996
|
delete base["pendingQuestionCount"];
|
|
@@ -4001,6 +4199,11 @@ function applyEvent(state, event) {
|
|
|
4001
4199
|
...event.payload.lastOutcome === void 0 ? {} : { lastOutcome: event.payload.lastOutcome }
|
|
4002
4200
|
}
|
|
4003
4201
|
};
|
|
4202
|
+
case "project.deploy_changed": return {
|
|
4203
|
+
...state,
|
|
4204
|
+
sequence: Math.max(state.sequence, event.sequence),
|
|
4205
|
+
deployByProjectKey: event.payload.deploys
|
|
4206
|
+
};
|
|
4004
4207
|
case "resources.updated": return {
|
|
4005
4208
|
...state,
|
|
4006
4209
|
sequence: Math.max(state.sequence, event.sequence),
|
|
@@ -4713,6 +4916,10 @@ function applyEvent(state, event) {
|
|
|
4713
4916
|
...state,
|
|
4714
4917
|
conversationsListRevision: state.conversationsListRevision + 1
|
|
4715
4918
|
};
|
|
4919
|
+
case "conversation.pull_requests_changed": return {
|
|
4920
|
+
...state,
|
|
4921
|
+
conversationsListRevision: state.conversationsListRevision + 1
|
|
4922
|
+
};
|
|
4716
4923
|
case "conversation.permission_changed": {
|
|
4717
4924
|
const { conversationName, waiting } = event.payload;
|
|
4718
4925
|
if (!waiting) {
|
|
@@ -6762,6 +6969,20 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
6762
6969
|
"aliases": [],
|
|
6763
6970
|
"category": "Lifecycle"
|
|
6764
6971
|
},
|
|
6972
|
+
{
|
|
6973
|
+
"id": "pan-untroubled",
|
|
6974
|
+
"path": ["untroubled"],
|
|
6975
|
+
"display": "/pan untroubled",
|
|
6976
|
+
"description": "Clear an agent troubled gate without spawning it",
|
|
6977
|
+
"args": [{
|
|
6978
|
+
"name": "id",
|
|
6979
|
+
"required": true,
|
|
6980
|
+
"variadic": false
|
|
6981
|
+
}],
|
|
6982
|
+
"options": [],
|
|
6983
|
+
"aliases": [],
|
|
6984
|
+
"category": "Lifecycle"
|
|
6985
|
+
},
|
|
6765
6986
|
{
|
|
6766
6987
|
"id": "pan-fork",
|
|
6767
6988
|
"path": ["fork"],
|
|
@@ -6842,10 +7063,16 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
6842
7063
|
},
|
|
6843
7064
|
{
|
|
6844
7065
|
"flags": "--issue <id>",
|
|
6845
|
-
"description": "Issue ID to associate with the new conversation",
|
|
7066
|
+
"description": "Issue ID to associate with the new conversation; without --cwd the new conversation starts in the issue workspace when it exists",
|
|
6846
7067
|
"required": true,
|
|
6847
7068
|
"valueHint": "id"
|
|
6848
7069
|
},
|
|
7070
|
+
{
|
|
7071
|
+
"flags": "--role <role>",
|
|
7072
|
+
"description": "Pane role for the new conversation: conversation (default), work, review, test, plan. With --issue, review makes the handoff the issue's Review row",
|
|
7073
|
+
"required": true,
|
|
7074
|
+
"valueHint": "role"
|
|
7075
|
+
},
|
|
6849
7076
|
{
|
|
6850
7077
|
"flags": "--title <title>",
|
|
6851
7078
|
"description": "Title for the new conversation; defaults to \"Handoff: <focus>\" (first ~70 chars) or \"Handoff: <source title>\" without focus",
|
|
@@ -7254,7 +7481,7 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
7254
7481
|
},
|
|
7255
7482
|
{
|
|
7256
7483
|
"flags": "--force",
|
|
7257
|
-
"description": "Clear paused and pending-operator-decision gates and start anyway",
|
|
7484
|
+
"description": "Clear paused, troubled, and pending-operator-decision gates and start anyway",
|
|
7258
7485
|
"required": false,
|
|
7259
7486
|
"valueHint": null
|
|
7260
7487
|
},
|
|
@@ -8209,7 +8436,7 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
8209
8436
|
"id": "pan-workspace-reap",
|
|
8210
8437
|
"path": ["workspace", "reap"],
|
|
8211
8438
|
"display": "/pan workspace reap",
|
|
8212
|
-
"description": "List or remove orphaned unhealthy workspace Docker stacks",
|
|
8439
|
+
"description": "List or remove orphaned unhealthy workspace Docker stacks and orphaned workspace networks",
|
|
8213
8440
|
"args": [],
|
|
8214
8441
|
"options": [
|
|
8215
8442
|
{
|
|
@@ -8220,7 +8447,7 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
8220
8447
|
},
|
|
8221
8448
|
{
|
|
8222
8449
|
"flags": "--apply",
|
|
8223
|
-
"description": "Run docker compose down -v --remove-orphans for candidates",
|
|
8450
|
+
"description": "Run docker compose down -v --remove-orphans for stack candidates and remove orphaned workspace networks",
|
|
8224
8451
|
"required": false,
|
|
8225
8452
|
"valueHint": null
|
|
8226
8453
|
},
|
|
@@ -10037,87 +10264,6 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
10037
10264
|
"aliases": [],
|
|
10038
10265
|
"category": "Admin"
|
|
10039
10266
|
},
|
|
10040
|
-
{
|
|
10041
|
-
"id": "pan-admin-specialists-logs",
|
|
10042
|
-
"path": [
|
|
10043
|
-
"admin",
|
|
10044
|
-
"specialists",
|
|
10045
|
-
"logs"
|
|
10046
|
-
],
|
|
10047
|
-
"display": "/pan admin specialists logs",
|
|
10048
|
-
"description": "View specialist run logs",
|
|
10049
|
-
"args": [
|
|
10050
|
-
{
|
|
10051
|
-
"name": "project",
|
|
10052
|
-
"required": false,
|
|
10053
|
-
"variadic": false
|
|
10054
|
-
},
|
|
10055
|
-
{
|
|
10056
|
-
"name": "type",
|
|
10057
|
-
"required": false,
|
|
10058
|
-
"variadic": false
|
|
10059
|
-
},
|
|
10060
|
-
{
|
|
10061
|
-
"name": "runId",
|
|
10062
|
-
"required": false,
|
|
10063
|
-
"variadic": false
|
|
10064
|
-
}
|
|
10065
|
-
],
|
|
10066
|
-
"options": [
|
|
10067
|
-
{
|
|
10068
|
-
"flags": "--json",
|
|
10069
|
-
"description": "Output in JSON format",
|
|
10070
|
-
"required": false,
|
|
10071
|
-
"valueHint": null
|
|
10072
|
-
},
|
|
10073
|
-
{
|
|
10074
|
-
"flags": "--limit <count>",
|
|
10075
|
-
"description": "Number of runs to show (default: 10)",
|
|
10076
|
-
"required": true,
|
|
10077
|
-
"valueHint": "count"
|
|
10078
|
-
},
|
|
10079
|
-
{
|
|
10080
|
-
"flags": "--tail",
|
|
10081
|
-
"description": "Follow active run log in real-time",
|
|
10082
|
-
"required": false,
|
|
10083
|
-
"valueHint": null
|
|
10084
|
-
}
|
|
10085
|
-
],
|
|
10086
|
-
"aliases": [],
|
|
10087
|
-
"category": "Admin"
|
|
10088
|
-
},
|
|
10089
|
-
{
|
|
10090
|
-
"id": "pan-admin-specialists-cleanup-logs",
|
|
10091
|
-
"path": [
|
|
10092
|
-
"admin",
|
|
10093
|
-
"specialists",
|
|
10094
|
-
"cleanup-logs"
|
|
10095
|
-
],
|
|
10096
|
-
"display": "/pan admin specialists cleanup-logs",
|
|
10097
|
-
"description": "Clean up old specialist logs",
|
|
10098
|
-
"args": [{
|
|
10099
|
-
"name": "project",
|
|
10100
|
-
"required": false,
|
|
10101
|
-
"variadic": false
|
|
10102
|
-
}, {
|
|
10103
|
-
"name": "type",
|
|
10104
|
-
"required": false,
|
|
10105
|
-
"variadic": false
|
|
10106
|
-
}],
|
|
10107
|
-
"options": [{
|
|
10108
|
-
"flags": "--force",
|
|
10109
|
-
"description": "Skip confirmation prompt",
|
|
10110
|
-
"required": false,
|
|
10111
|
-
"valueHint": null
|
|
10112
|
-
}, {
|
|
10113
|
-
"flags": "--all",
|
|
10114
|
-
"description": "Clean up logs for all projects",
|
|
10115
|
-
"required": false,
|
|
10116
|
-
"valueHint": null
|
|
10117
|
-
}],
|
|
10118
|
-
"aliases": [],
|
|
10119
|
-
"category": "Admin"
|
|
10120
|
-
},
|
|
10121
10267
|
{
|
|
10122
10268
|
"id": "pan-admin-remote",
|
|
10123
10269
|
"path": ["admin", "remote"],
|
|
@@ -11008,6 +11154,80 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
11008
11154
|
"aliases": [],
|
|
11009
11155
|
"category": "Conversation"
|
|
11010
11156
|
},
|
|
11157
|
+
{
|
|
11158
|
+
"id": "pan-conversations-link-pr",
|
|
11159
|
+
"path": ["conversations", "link-pr"],
|
|
11160
|
+
"display": "/pan conversations link-pr",
|
|
11161
|
+
"description": "Link a pull request (URL, #42, or owner/repo#42) to a conversation",
|
|
11162
|
+
"args": [{
|
|
11163
|
+
"name": "query",
|
|
11164
|
+
"required": true,
|
|
11165
|
+
"variadic": false
|
|
11166
|
+
}, {
|
|
11167
|
+
"name": "ref",
|
|
11168
|
+
"required": true,
|
|
11169
|
+
"variadic": false
|
|
11170
|
+
}],
|
|
11171
|
+
"options": [{
|
|
11172
|
+
"flags": "--source <source>",
|
|
11173
|
+
"description": "agent or manual (default: agent inside an agent, else manual)",
|
|
11174
|
+
"required": true,
|
|
11175
|
+
"valueHint": "source"
|
|
11176
|
+
}],
|
|
11177
|
+
"aliases": [],
|
|
11178
|
+
"category": "Conversation"
|
|
11179
|
+
},
|
|
11180
|
+
{
|
|
11181
|
+
"id": "pan-conversations-unlink-pr",
|
|
11182
|
+
"path": ["conversations", "unlink-pr"],
|
|
11183
|
+
"display": "/pan conversations unlink-pr",
|
|
11184
|
+
"description": "Unlink a pull request from a conversation (the sweep will not re-add it)",
|
|
11185
|
+
"args": [{
|
|
11186
|
+
"name": "query",
|
|
11187
|
+
"required": true,
|
|
11188
|
+
"variadic": false
|
|
11189
|
+
}, {
|
|
11190
|
+
"name": "ref",
|
|
11191
|
+
"required": true,
|
|
11192
|
+
"variadic": false
|
|
11193
|
+
}],
|
|
11194
|
+
"options": [],
|
|
11195
|
+
"aliases": [],
|
|
11196
|
+
"category": "Conversation"
|
|
11197
|
+
},
|
|
11198
|
+
{
|
|
11199
|
+
"id": "pan-conversations-prs",
|
|
11200
|
+
"path": ["conversations", "prs"],
|
|
11201
|
+
"display": "/pan conversations prs",
|
|
11202
|
+
"description": "List the pull requests linked to a conversation (* = the one shown)",
|
|
11203
|
+
"args": [{
|
|
11204
|
+
"name": "query",
|
|
11205
|
+
"required": true,
|
|
11206
|
+
"variadic": false
|
|
11207
|
+
}],
|
|
11208
|
+
"options": [{
|
|
11209
|
+
"flags": "--json",
|
|
11210
|
+
"description": "Output { links, effective } as JSON",
|
|
11211
|
+
"required": false,
|
|
11212
|
+
"valueHint": null
|
|
11213
|
+
}],
|
|
11214
|
+
"aliases": [],
|
|
11215
|
+
"category": "Conversation"
|
|
11216
|
+
},
|
|
11217
|
+
{
|
|
11218
|
+
"id": "pan-conversations-auto-archive-on-merge",
|
|
11219
|
+
"path": ["conversations", "auto-archive-on-merge"],
|
|
11220
|
+
"display": "/pan conversations auto-archive-on-merge",
|
|
11221
|
+
"description": "Show or set (on|off) archiving operator conversations once all their linked PRs are merged or closed (default off)",
|
|
11222
|
+
"args": [{
|
|
11223
|
+
"name": "value",
|
|
11224
|
+
"required": false,
|
|
11225
|
+
"variadic": false
|
|
11226
|
+
}],
|
|
11227
|
+
"options": [],
|
|
11228
|
+
"aliases": [],
|
|
11229
|
+
"category": "Conversation"
|
|
11230
|
+
},
|
|
11011
11231
|
{
|
|
11012
11232
|
"id": "pan-conversations-heal",
|
|
11013
11233
|
"path": ["conversations", "heal"],
|
|
@@ -12317,9 +12537,27 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
12317
12537
|
"required": true,
|
|
12318
12538
|
"valueHint": "duration"
|
|
12319
12539
|
},
|
|
12540
|
+
{
|
|
12541
|
+
"flags": "--deacon",
|
|
12542
|
+
"description": "Start Cloister/Deacon on the reloaded dashboard (always on after a reload)",
|
|
12543
|
+
"required": false,
|
|
12544
|
+
"valueHint": null
|
|
12545
|
+
},
|
|
12320
12546
|
{
|
|
12321
12547
|
"flags": "--no-deacon",
|
|
12322
|
-
"description": "
|
|
12548
|
+
"description": "Refused: a Deacon-off dashboard is a peer and cannot hold the host dashboard port",
|
|
12549
|
+
"required": false,
|
|
12550
|
+
"valueHint": null
|
|
12551
|
+
},
|
|
12552
|
+
{
|
|
12553
|
+
"flags": "--resume",
|
|
12554
|
+
"description": "Enable agent auto-resume on the reloaded dashboard (default: keep the running dashboard's resume gate)",
|
|
12555
|
+
"required": false,
|
|
12556
|
+
"valueHint": null
|
|
12557
|
+
},
|
|
12558
|
+
{
|
|
12559
|
+
"flags": "--no-resume",
|
|
12560
|
+
"description": "Disable agent auto-resume on the reloaded dashboard (default: keep the running dashboard's resume gate)",
|
|
12323
12561
|
"required": false,
|
|
12324
12562
|
"valueHint": null
|
|
12325
12563
|
}
|
|
@@ -13161,9 +13399,7 @@ const COMPOSER_COMMAND_MANIFEST = [
|
|
|
13161
13399
|
];
|
|
13162
13400
|
const COMPOSER_COMMAND_INSERT_OVERRIDES = {
|
|
13163
13401
|
"plan finalize": "/pan plan finalize ",
|
|
13164
|
-
"admin specialists done": "/pan admin specialists done"
|
|
13165
|
-
"admin specialists logs": "/pan admin specialists logs",
|
|
13166
|
-
"admin specialists cleanup-logs": "/pan admin specialists cleanup-logs"
|
|
13402
|
+
"admin specialists done": "/pan admin specialists done"
|
|
13167
13403
|
};
|
|
13168
13404
|
const COMPOSER_COMMAND_VARIANTS = [
|
|
13169
13405
|
{
|
|
@@ -13341,7 +13577,8 @@ const AGENT_ROLES = [
|
|
|
13341
13577
|
"test",
|
|
13342
13578
|
"uat",
|
|
13343
13579
|
"strike",
|
|
13344
|
-
"plan"
|
|
13580
|
+
"plan",
|
|
13581
|
+
"conversation"
|
|
13345
13582
|
];
|
|
13346
13583
|
function isTerminalBackendName(value) {
|
|
13347
13584
|
return typeof value === "string" && TERMINAL_BACKEND_NAMES.includes(value);
|
|
@@ -13395,6 +13632,16 @@ const DirectoryTranscriptRef = Schema.Union([
|
|
|
13395
13632
|
})
|
|
13396
13633
|
]);
|
|
13397
13634
|
const DirectoryEntryLocation = Schema.Literals(["local", "remote"]);
|
|
13635
|
+
const DirectoryPauseBy = Schema.Literals([
|
|
13636
|
+
"operator",
|
|
13637
|
+
"scheduler",
|
|
13638
|
+
"machine"
|
|
13639
|
+
]);
|
|
13640
|
+
const DirectoryPause = Schema.Struct({
|
|
13641
|
+
by: DirectoryPauseBy,
|
|
13642
|
+
reason: Schema.NullOr(Schema.String),
|
|
13643
|
+
since: Schema.NullOr(Schema.String)
|
|
13644
|
+
});
|
|
13398
13645
|
const DirectoryEntry = Schema.Struct({
|
|
13399
13646
|
id: Schema.String,
|
|
13400
13647
|
kind: DirectoryEntryKind,
|
|
@@ -13417,11 +13664,19 @@ const DirectoryEntry = Schema.Struct({
|
|
|
13417
13664
|
lastActivityAt: Schema.NullOr(Schema.String),
|
|
13418
13665
|
costUsd: Schema.NullOr(Schema.Number),
|
|
13419
13666
|
source: DirectoryEntrySource,
|
|
13420
|
-
transcript: Schema.NullOr(DirectoryTranscriptRef)
|
|
13667
|
+
transcript: Schema.NullOr(DirectoryTranscriptRef),
|
|
13668
|
+
/** The pause gate from state.json, native agents only (PAN-4197). */
|
|
13669
|
+
pause: Schema.optional(DirectoryPause)
|
|
13421
13670
|
});
|
|
13671
|
+
/**
|
|
13672
|
+
* `window`: live entries plus finished ones active inside `windowHours`.
|
|
13673
|
+
* `live` (PAN-4197): what is running or waiting now; `windowHours` is 0.
|
|
13674
|
+
*/
|
|
13675
|
+
const DirectoryScope = Schema.Literals(["window", "live"]);
|
|
13422
13676
|
const AgentDirectoryResponse = Schema.Struct({
|
|
13423
13677
|
generatedAt: Schema.String,
|
|
13424
13678
|
windowHours: Schema.Number,
|
|
13679
|
+
scope: Schema.optional(DirectoryScope),
|
|
13425
13680
|
entries: Schema.Array(DirectoryEntry)
|
|
13426
13681
|
});
|
|
13427
13682
|
//#endregion
|
|
@@ -13441,6 +13696,73 @@ function companionTerminalKindFor(conversation) {
|
|
|
13441
13696
|
const COMPANION_TERMINAL_OPEN_BODY_KEYS = [];
|
|
13442
13697
|
const COMPANION_TERMINAL_CLOSE_BODY_KEYS = ["generation"];
|
|
13443
13698
|
//#endregion
|
|
13444
|
-
|
|
13699
|
+
//#region src/pull-request-ref.ts
|
|
13700
|
+
const SCHEME = String.raw`(?:https?:\/\/)?`;
|
|
13701
|
+
const HOST = String.raw`([a-z0-9.-]+(?::\d+)?)`;
|
|
13702
|
+
const TAIL = String.raw`(?:\/[^?#]*)?(?:[?#].*)?$`;
|
|
13703
|
+
const GITLAB_MR = new RegExp(String.raw`^${SCHEME}${HOST}\/((?:[\w.-]+\/)+[\w.-]+)\/-\/merge_requests\/(\d+)${TAIL}`, "i");
|
|
13704
|
+
const GITHUB_PR = new RegExp(String.raw`^${SCHEME}${HOST}\/([\w.-]+\/[\w.-]+)\/pull\/(\d+)${TAIL}`, "i");
|
|
13705
|
+
const GITLAB_MR_LEGACY = new RegExp(String.raw`^${SCHEME}${HOST}\/((?:[\w.-]+\/)+[\w.-]+)\/merge_requests\/(\d+)${TAIL}`, "i");
|
|
13706
|
+
const SHORT_REF = /^(?:((?:[\w.-]+\/)+[\w.-]+))?[#!](\d+)$/;
|
|
13707
|
+
function canonicalPullRequestUrl(key, forge) {
|
|
13708
|
+
return forge === "gitlab" ? `https://${key.host}/${key.repository}/-/merge_requests/${key.number}` : `https://${key.host}/${key.repository}/pull/${key.number}`;
|
|
13709
|
+
}
|
|
13710
|
+
function build(host, repository, number, forge) {
|
|
13711
|
+
if (!Number.isSafeInteger(number) || number <= 0) return null;
|
|
13712
|
+
const key = {
|
|
13713
|
+
host: host.toLowerCase(),
|
|
13714
|
+
repository: repository.toLowerCase().replace(/\.git$/, ""),
|
|
13715
|
+
number
|
|
13716
|
+
};
|
|
13717
|
+
return {
|
|
13718
|
+
...key,
|
|
13719
|
+
forge,
|
|
13720
|
+
url: canonicalPullRequestUrl(key, forge)
|
|
13721
|
+
};
|
|
13722
|
+
}
|
|
13723
|
+
/**
|
|
13724
|
+
* Accepts a full PR/MR URL, `#42`, or `owner/repo#42` (`!42` for GitLab MRs).
|
|
13725
|
+
* The short forms need `defaultRepo` for host and forge (`#42` for the
|
|
13726
|
+
* repository too) and return null without it. Anything else returns null.
|
|
13727
|
+
*/
|
|
13728
|
+
function parsePullRequestRef(input, defaultRepo) {
|
|
13729
|
+
const text = input.trim();
|
|
13730
|
+
if (!text) return null;
|
|
13731
|
+
for (const [pattern, forge] of [
|
|
13732
|
+
[GITLAB_MR, "gitlab"],
|
|
13733
|
+
[GITHUB_PR, "github"],
|
|
13734
|
+
[GITLAB_MR_LEGACY, "gitlab"]
|
|
13735
|
+
]) {
|
|
13736
|
+
const match = pattern.exec(text);
|
|
13737
|
+
if (match) return build(match[1], match[2], Number(match[3]), forge);
|
|
13738
|
+
}
|
|
13739
|
+
const short = SHORT_REF.exec(text);
|
|
13740
|
+
if (!short || !defaultRepo) return null;
|
|
13741
|
+
return build(defaultRepo.host, short[1] ?? defaultRepo.repository, Number(short[2]), defaultRepo.forge);
|
|
13742
|
+
}
|
|
13743
|
+
/**
|
|
13744
|
+
* The repository behind a git remote URL (https, ssh://, or scp-style), or null
|
|
13745
|
+
* when the host names neither GitHub nor GitLab.
|
|
13746
|
+
*/
|
|
13747
|
+
function repoFromRemoteUrl(remote) {
|
|
13748
|
+
if (!remote) return null;
|
|
13749
|
+
const text = remote.trim();
|
|
13750
|
+
const match = /^[a-z][a-z0-9+.-]*:\/\/(?:[^@/]*@)?([^/:]+)(?::\d+)?\/(.+?)(?:\.git)?\/?$/i.exec(text) ?? /^(?:[^@/]+@)?([^/:]+):(.+?)(?:\.git)?\/?$/i.exec(text);
|
|
13751
|
+
if (!match) return null;
|
|
13752
|
+
const host = match[1].toLowerCase();
|
|
13753
|
+
const forge = host.includes("gitlab") ? "gitlab" : host.includes("github") ? "github" : null;
|
|
13754
|
+
if (!forge) return null;
|
|
13755
|
+
return {
|
|
13756
|
+
host,
|
|
13757
|
+
repository: match[2].toLowerCase(),
|
|
13758
|
+
forge
|
|
13759
|
+
};
|
|
13760
|
+
}
|
|
13761
|
+
/** True when the ref's host and repository match one of the configured repos. */
|
|
13762
|
+
function isConfiguredPullRequestRepo(ref, repos) {
|
|
13763
|
+
return repos.some((repo) => repo.host === ref.host && repo.repository === ref.repository);
|
|
13764
|
+
}
|
|
13765
|
+
//#endregion
|
|
13766
|
+
export { ACP_BEHAVIOR, AGENT_ROLES, Activity, ActivityDetailedEvent, ActivityEntryEvent, ActivityTtsEvent, ActivityUpdatedEvent, AdmissionState, AgentActivityChangedEvent, AgentChannelReply, AgentChannelReplyEvent, AgentCompletedEvent, AgentContextSaturationChangedEvent, AgentCreatedEvent, AgentCurrentIssueSetEvent, AgentDirectoryResponse, AgentEnrichmentChangedEvent, AgentHealthKind, AgentHealthSnapshot, AgentHealthStatus, AgentHeartbeatDeadEvent, AgentHookFiredEvent, AgentId, AgentMessageReceivedEvent, AgentModelSetEvent, AgentOutput, AgentOutputReceivedEvent, AgentPermissionRequestedEvent, AgentPermissionResolvedEvent, AgentResolution, AgentResolutionChangedEvent, AgentRuntimeSnapshot, AgentSnapshot, AgentStartedEvent, AgentStateRestoredEvent, AgentStatus, AgentStatusChangedEvent, AgentStoppedEvent, AgentThinkingStartedEvent, AgentThinkingStoppedEvent, AgentTurnDiffCompletedEvent, AgentWaitingClearedEvent, AgentWaitingStartedEvent, ArtifactAgentHarness, ArtifactAgentRole, ArtifactCreateResponse, ArtifactDetailResponse, ArtifactHash, ArtifactId, ArtifactLifecycleState, ArtifactListEntry, ArtifactListResponse, ArtifactMetadata, ArtifactPublishResponse, ArtifactSlug, ArtifactStatusResponse, ArtifactUnshareResponse, ArtifactUrls, ArtifactValidationCode, ArtifactValidationFinding, ArtifactValidationResult, BackendPane, BackendPaneChangedEvent, BackendPaneRemovedEvent, BeadsFreshnessChangedEvent, CHANNEL_REPLY_KIND_VALUES, CLAUDE_CODE_BEHAVIOR, CODEX_BEHAVIOR, COMPANION_TERMINAL_CLOSE_BODY_KEYS, COMPANION_TERMINAL_OPEN_BODY_KEYS, COMPOSER_COMMAND_INSERT_OVERRIDES, COMPOSER_COMMAND_MANIFEST, COMPOSER_COMMAND_VARIANTS, CONTEXT_LAYER_KINDS, CONTEXT_PREVIEW_HARNESSES, ChannelPermissionRequestSnapshot, ChannelReplyArtifactRef, ChannelReplyKind, ChatMessage, ClaudeChannelPermissionBehavior, CompactBoundary, ContextEditableLayerRecord, ContextHarnessPreviews, ContextLayerDraft, ContextLayerKind, ContextLayerSaveRequest, ContextLayerSaveResponse, ContextLayerTarget, ContextLayersResponse, ContextPreviewDiagnostic, ContextPreviewHarness, ContextPreviewRequest, ContextPreviewResponse, ContextProjectSummary, ContextSyncRequest, ContextSyncResponse, ContextSyncTarget, ContextUsage, ContextWorkspaceSummary, ConversationCompactingChangedEvent, ConversationCostSummary, ConversationCreatedEvent, ConversationEvent, ConversationFilter, ConversationMovedEvent, ConversationPermissionChangedEvent, ConversationPullRequests, ConversationPullRequestsChangedEvent, ConversationResponse, ConversationTitleChangedEvent, CostEventRecordedEvent, DEFAULT_MAX_MEMORY_OBSERVATIONS_PER_ISSUE, DEFAULT_MAX_TURN_DIFF_SUMMARIES_PER_AGENT, DashboardLifecycleCompletedEvent, DashboardLifecycleFailedEvent, DashboardLifecycleStartedEvent, DashboardSnapshot, DeepWipeRpc, DeployStalenessSnapshot, DerivedBranchState, DerivedIssueState, DerivedPrState, DirectoryEntry, DirectoryEntryKind, DirectoryEntryLocation, DirectoryEntrySource, DirectoryEntryState, DirectoryPause, DirectoryPauseBy, DirectoryScope, DirectoryTranscriptRef, DiscoveredSessionSnapshot, DomainEvent, EDITORS, EditorIdSchema, EmbedProgressEvent, EmbedProgressSnapshot, EmbedSessionsRpc, EnrichCompleteEvent, EnrichProgressEvent, EnrichProgressSnapshot, EnrichSessionsRpc, EnrichStatsSnapshot, ExtractionProviderConfig, ExtractionProviderTarget, FeatureNode, FeatureRegistryEntry, FeatureRegistryStatus, FlywheelAgent, FlywheelAgentStatus, FlywheelBugRateCriterion, FlywheelConversationSummary, FlywheelDerivedStatus, FlywheelEffort, FlywheelFreshness, FlywheelHarness, FlywheelHeadline, FlywheelHttpUrl, FlywheelInFlightRow, FlywheelJournalSummary, FlywheelLastTick, FlywheelOrchestrator, FlywheelOrderBookSummary, FlywheelOrders, FlywheelP0Criterion, FlywheelParkedItem, FlywheelPipelineItem, FlywheelPipelineStatus, FlywheelPipelineVerb, FlywheelPolicies, FlywheelRunId, FlywheelRunState, FlywheelScope, FlywheelStats, FlywheelStatsCriterionStatus, FlywheelStatsTrend, FlywheelStatsWindow, FlywheelStatus, FlywheelSubstrateBug, FlywheelSubstrateBugRow, FlywheelSubstrateBugStatus, FlywheelSubstrateSeverity, FlywheelSuggestion, FlywheelSuggestionAction, FlywheelSuggestionPriority, FlywheelSystemStatus, GetAvailableEditorsRpc, GetConversationCostByWorkspaceRpc, GetConversationCostRpc, GetConversationStatsRpc, GetDiscoveredSessionRpc, GetSessionsFeedFacetsRpc, GetSnapshotRpc, GlobalContextLayerRecord, GlobalContextLayerTarget, HOOK_INVENTORY, HealthReason, HealthState, HostHealthMetrics, HostPlatform, HygieneFinding, HygienePullRequest, HygieneReport, INITIAL_READ_MODEL_STATE, ISSUE_ATTENTIONS, ISSUE_STATES, ISSUE_STATE_PRECEDENCE, IssueAttention, IssueId, IssueState, IssueStateChangedEvent, IssueStatusChangedEvent, IssueTransitionedEvent, IssuesDeltaEvent, IssuesSnapshotEvent, IssuesUpdatedEvent, KIMI_CODE_BEHAVIOR, KNOWN_HARNESSES, LegacySystemHealthSummary, LegacyWebhookRelaySummary, LinearMcpAuthCallbackRelayedEvent, LinearMcpAuthHealthyEvent, LinearMcpAuthNotifiedEvent, LinearMcpAuthRequiredEvent, ListDiscoveredSessionsRpc, ListSessionsFeedRpc, MAX_CHANNEL_REPLY_ARTIFACT_LABEL_LENGTH, MAX_CHANNEL_REPLY_ARTIFACT_REFS, MAX_CHANNEL_REPLY_ARTIFACT_URI_LENGTH, MAX_CHANNEL_REPLY_SUMMARY_LENGTH, MEMBERSHIP_UNAVAILABLE_REASONS, MUSE_BEHAVIOR, MemoryAgentRole, MemoryHealthChangedEvent, MemoryIdentity, MemoryObservation, MemoryObservationCreatedEvent, MemoryResetMarkerCreatedEvent, MemoryRollupTriggeredEvent, MemoryStatus, MemoryStatusPhase, MemoryStatusUpdatedEvent, MemoryTokenUsage, MergeReadyEvent, ModelOrigin, ModelOriginEntry, OHMYPI_BEHAVIOR, OPENCODE_BEHAVIOR, OVERDECK_AGENT_PROTOCOL_VERSION, OVERDECK_DASHBOARD_PROTOCOL_VERSION, OpenInEditorInput, OperatorInterventionEvent, OrderBook, OrderBookIndexEntry, OrderBookItem, OrderBookLane, OrderBookPosture, OrderBookSettings, OrderBookStatus, PIPELINE_MEMBERSHIP_LOADING_CODE, PanRpcError, PanRpcGroup, PendingTurn, PipelineReviewCompletedEvent, PipelineReviewStartedEvent, PipelineTestCompletedEvent, PipelineTestStartedEvent, PipelineVerificationFailedEvent, PipelineVerificationStartedEvent, PlanItemStatusChangedEvent, PlanItemsUnblockedEvent, PlanSubitemStatusChangedEvent, PlanningFailedEvent, PlanningStartedEvent, PlanningSyncEvent, PrChecksState, PrReviewState, ProjectCiHeadObservedEvent, ProjectCiSnapshot, ProjectCiSuite, ProjectCiSuiteObservedEvent, ProjectContextLayerRecord, ProjectContextLayerTarget, ProjectDeployChangedEvent, ProjectDeployPhase, ProjectDeploySnapshot, ProjectSessionTree, ProposedPlan, PullRequestKey, PullRequestLink, PullRequestLinkListing, PullRequestLinkSource, PullRequestLinkedConversation, PullRequestSnapshot, PullRequestState, RagDecision, RagDecisionSource, ReadFileAtPathInput, ReadFileAtPathResult, ReadFileAtPathRpc, ReadWorkspaceFileInput, ReadWorkspaceFileResult, ReadWorkspaceFileRpc, ReplayEventsRpc, ResetMarker, ResetMarkerScope, ResizeTerminalRpc, ResolveFilePathExistsInput, ResolveFilePathExistsResult, ResolveFilePathExistsRpc, ResourceStats, ResourcesUpdatedEvent, RestartGateChangedEvent, RestartGateKind, RestartGateOutcome, RestartGateRequest, RestartGateSnapshot, ReviewApprovedEvent, ReviewCoordinatorDiedEvent, ReviewCoordinatorStartedEvent, ReviewReviewerCompletedEvent, ReviewReviewerStartedEvent, ReviewSpecialistTimedOutEvent, ReviewVerdictDispatchedEvent, ReviewVerdictRejectedEvent, ReviewVerdictRestoreBlockedEvent, ReviewerRoundMetadata, ReviewerRoundSummary, Role, ScanCompleteEvent, ScanConversationsRpc, ScanProgressEvent, ScanProgressSnapshot, ScanResult, ScanStartedEvent, SearchConversationsRpc, SendTerminalInputRpc, SequenceNumber, ServiceHealthSnapshot, ServiceHealthStatus, SessionNode, SessionNodePresence, SessionNodeType, SessionTreeDelta, SessionsFeedFacetsSnapshot, SessionsFeedRowSnapshot, SessionsFeedSource, ShadowInferenceUpdateEvent, ShellOpenInEditorRpc, SpecialistCompletedEvent, SpecialistFailedEvent, SpecialistLifecycle, SpecialistStartedEvent, StartAgentRpc, StartPlanningRpc, SubagentSummary, SubscribeAgentOutputRpc, SubscribeConversationMessagesRpc, SubscribeDomainEventsRpc, SubscribeIssueEventsRpc, SubscribeProjectSessionTreeRpc, SubscribeTerminalRpc, SubstrateBugFiledEvent, SweepEscalatedEvent, SweepRecommendationEvent, SweepScanEvent, SystemHealthConsumer, SystemHealthSeverityChangedEvent, SystemHealthSnapshot, SystemHeartbeatEvent, TELEMETRY_CLI_VERBS, TELEMETRY_EVENT_CATALOG, TELEMETRY_EVENT_NAMES, TELEMETRY_PROPERTY_DOMAINS, TERMINAL_BACKEND_NAMES, TerminalCloseRpc, TerminalOpenRpc, TerminalOutput, TerminalResizeRpc, TerminalWriteRpc, TestPassedEvent, ThinkingState, TickMarker, TickMarkerPhase, TurnDiffFileChange, TurnDiffSummary, WIRED_HOOK_INVENTORY, WIRED_HOOK_NAMES, WS_METHODS, WaitingReason, WaitingState, WorkCompletedEvent, WorkLogEntry, WorkspaceAbortedEvent, WorkspaceArtifactsResponse, WorkspaceContextLayerRecord, WorkspaceContextLayerTarget, WorkspaceCreatedEvent, WorkspaceDeletedEvent, WorkspaceDestroyedEvent, WorkspaceWipeStartedEvent, WriteFileAtPathInput, WriteFileAtPathResult, WriteFileAtPathRpc, applyEvent, applyEvents, applyIssueDelta, canonicalPullRequestUrl, companionTerminalKindFor, compareIssueIds, createIssueDelta, decodeFlywheelDerivedStatus, decodeFlywheelStats, deriveProjectCi, encodeFlywheelStats, getHarness, getHarnessBehavior, getMaxMemoryObservationsPerIssue, getMaxTurnDiffSummariesPerAgent, getRuntimeBehavior, isAgentRole, isAgentSessionName, isChannelReplyKind, isConfiguredPullRequestRepo, isIssueAttention, isIssueState, isTerminalBackendName, isTerminalTurnDiffSummaryStatus, normalizeChannelReplyPayload, omitTurnDiffSummariesForAgent, parsePullRequestRef, projectLegacySystemHealthSummary, repoFromRemoteUrl, resolveEffectivePullRequest, syncSnapshot, trimMemoryObservations, trimTurnDiffSummaries, withPaneLivenessAlias };
|
|
13445
13767
|
|
|
13446
13768
|
//# sourceMappingURL=index.mjs.map
|