pi-daddy 0.46.1 → 0.47.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/CHANGELOG.md +14 -0
- package/README.md +41 -11
- package/contracts/ledger-record/v1/governance-event.schema.json +65 -3
- package/dist/governance/approval-prompt.d.ts +4 -0
- package/dist/governance/approval-prompt.d.ts.map +1 -1
- package/dist/governance/approval-prompt.js +59 -4
- package/dist/governance/approval-prompt.js.map +1 -1
- package/dist/governance/auto-mode-policy.d.ts +11 -0
- package/dist/governance/auto-mode-policy.d.ts.map +1 -0
- package/dist/governance/auto-mode-policy.js +309 -0
- package/dist/governance/auto-mode-policy.js.map +1 -0
- package/dist/governance/execution-retention.d.ts +3 -0
- package/dist/governance/execution-retention.d.ts.map +1 -1
- package/dist/governance/execution-retention.js +30 -0
- package/dist/governance/execution-retention.js.map +1 -1
- package/dist/governance/ledger-events.d.ts +14 -1
- package/dist/governance/ledger-events.d.ts.map +1 -1
- package/dist/governance/ledger-events.js +13 -0
- package/dist/governance/ledger-events.js.map +1 -1
- package/dist/governance/ledger-report.d.ts.map +1 -1
- package/dist/governance/ledger-report.js +12 -3
- package/dist/governance/ledger-report.js.map +1 -1
- package/dist/governance/ledger-v3-validation.d.ts.map +1 -1
- package/dist/governance/ledger-v3-validation.js +17 -3
- package/dist/governance/ledger-v3-validation.js.map +1 -1
- package/dist/governance/ledger.d.ts +1 -1
- package/dist/governance/ledger.d.ts.map +1 -1
- package/dist/governance/ledger.js +1 -1
- package/dist/governance/ledger.js.map +1 -1
- package/dist/kernel/approval.d.ts +1 -1
- package/dist/kernel/approval.d.ts.map +1 -1
- package/dist/kernel/approval.js +1 -1
- package/dist/kernel/approval.js.map +1 -1
- package/dist/kernel/auto-mode.d.ts +35 -0
- package/dist/kernel/auto-mode.d.ts.map +1 -0
- package/dist/kernel/auto-mode.js +29 -0
- package/dist/kernel/auto-mode.js.map +1 -0
- package/dist/kernel/delegate-types.d.ts +2 -0
- package/dist/kernel/delegate-types.d.ts.map +1 -1
- package/dist/kernel/delegate-types.js.map +1 -1
- package/dist/kernel/delegate.d.ts.map +1 -1
- package/dist/kernel/delegate.js +2 -2
- package/dist/kernel/delegate.js.map +1 -1
- package/dist/kernel/env-names.d.ts +2 -0
- package/dist/kernel/env-names.d.ts.map +1 -1
- package/dist/kernel/env-names.js +4 -0
- package/dist/kernel/env-names.js.map +1 -1
- package/dist/kernel/propagation.d.ts +5 -1
- package/dist/kernel/propagation.d.ts.map +1 -1
- package/dist/kernel/propagation.js +8 -2
- package/dist/kernel/propagation.js.map +1 -1
- package/dist/products/dashboard-cli.d.ts +6 -0
- package/dist/products/dashboard-cli.d.ts.map +1 -1
- package/dist/products/dashboard-cli.js +249 -52
- package/dist/products/dashboard-cli.js.map +1 -1
- package/dist/products/dashboard-display-controls.d.ts +2 -1
- package/dist/products/dashboard-display-controls.d.ts.map +1 -1
- package/dist/products/dashboard-display-controls.js +61 -0
- package/dist/products/dashboard-display-controls.js.map +1 -1
- package/dist/products/dashboard-render.d.ts +2 -0
- package/dist/products/dashboard-render.d.ts.map +1 -1
- package/dist/products/dashboard-render.js +2 -2
- package/dist/products/dashboard-render.js.map +1 -1
- package/dist/products/dashboard-screen.d.ts +52 -0
- package/dist/products/dashboard-screen.d.ts.map +1 -0
- package/dist/products/dashboard-screen.js +262 -0
- package/dist/products/dashboard-screen.js.map +1 -0
- package/dist/products/dashboard-session-client.d.ts +34 -2
- package/dist/products/dashboard-session-client.d.ts.map +1 -1
- package/dist/products/dashboard-session-client.js +51 -0
- package/dist/products/dashboard-session-client.js.map +1 -1
- package/dist/products/ecosystem-versions.d.ts +19 -0
- package/dist/products/ecosystem-versions.d.ts.map +1 -0
- package/dist/products/ecosystem-versions.js +2 -0
- package/dist/products/ecosystem-versions.js.map +1 -0
- package/extensions/approvals.ts +3 -2
- package/extensions/dashboard-session-server.ts +32 -4
- package/extensions/delegate-chain.ts +2 -0
- package/extensions/delegation-ledger.ts +10 -6
- package/extensions/ecosystem-versions.ts +166 -0
- package/extensions/grants-command.ts +33 -3
- package/extensions/grants.ts +28 -2
- package/extensions/reload-environment.ts +16 -1
- package/extensions/run-delegation.ts +49 -3
- package/extensions/session-auto-mode.ts +132 -0
- package/extensions/session.ts +47 -37
- package/package.json +2 -2
- package/src/governance/approval-prompt.ts +62 -4
- package/src/governance/auto-mode-policy.ts +297 -0
- package/src/governance/execution-retention.ts +24 -0
- package/src/governance/ledger-events.ts +22 -1
- package/src/governance/ledger-report.ts +14 -3
- package/src/governance/ledger-v3-validation.ts +17 -3
- package/src/governance/ledger.ts +1 -0
- package/src/kernel/approval.ts +1 -1
- package/src/kernel/auto-mode.ts +56 -0
- package/src/kernel/delegate-types.ts +2 -0
- package/src/kernel/delegate.ts +2 -1
- package/src/kernel/env-names.ts +4 -0
- package/src/kernel/propagation.ts +11 -2
- package/src/products/dashboard-cli.ts +256 -53
- package/src/products/dashboard-display-controls.ts +52 -0
- package/src/products/dashboard-render.ts +2 -2
- package/src/products/dashboard-screen.ts +339 -0
- package/src/products/dashboard-session-client.ts +60 -1
- package/src/products/ecosystem-versions.ts +18 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** Height-bounded, task-first view. Permission state is always supplied by the owner. */
|
|
2
|
+
import type { EcosystemVersionRow } from "./ecosystem-versions.ts";
|
|
3
|
+
import type { DashboardProjection } from "./dashboard-projection.ts";
|
|
4
|
+
import { ActivityTimelineAliases, type ActivityTimeline } from "./activity-timeline.ts";
|
|
5
|
+
import type { DashboardSessionSnapshot } from "./dashboard-session-client.ts";
|
|
6
|
+
export interface DashboardItem {
|
|
7
|
+
key: string;
|
|
8
|
+
label: string;
|
|
9
|
+
status: string;
|
|
10
|
+
elapsed: string;
|
|
11
|
+
details: string[];
|
|
12
|
+
taskKey?: string;
|
|
13
|
+
timelinePath?: string;
|
|
14
|
+
approval?: boolean;
|
|
15
|
+
skills?: boolean;
|
|
16
|
+
agent?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface DashboardScreenState {
|
|
19
|
+
view: "main" | "details" | "models" | "help" | "versions" | "version-details";
|
|
20
|
+
versionId?: EcosystemVersionRow["id"];
|
|
21
|
+
versionRows?: EcosystemVersionRow[];
|
|
22
|
+
selectedKey?: string;
|
|
23
|
+
offset: number;
|
|
24
|
+
items: DashboardItem[];
|
|
25
|
+
}
|
|
26
|
+
export declare const dashboardScreenState: () => DashboardScreenState;
|
|
27
|
+
export declare const dashboardText: (value: string) => string;
|
|
28
|
+
export declare function ledgerDashboardItems(projection: DashboardProjection): DashboardItem[];
|
|
29
|
+
export declare function activityDashboardItems(timeline: ActivityTimeline, aliases: ActivityTimelineAliases, now: Date): DashboardItem[];
|
|
30
|
+
export interface DashboardScreenOptions {
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
screen: DashboardScreenState;
|
|
34
|
+
items: DashboardItem[];
|
|
35
|
+
session?: DashboardSessionSnapshot;
|
|
36
|
+
history?: boolean;
|
|
37
|
+
filter?: string;
|
|
38
|
+
notice?: string;
|
|
39
|
+
pending?: boolean;
|
|
40
|
+
problem?: string;
|
|
41
|
+
current?: string;
|
|
42
|
+
currentStatus?: string;
|
|
43
|
+
color?: boolean;
|
|
44
|
+
content?: {
|
|
45
|
+
title: string;
|
|
46
|
+
text: string;
|
|
47
|
+
};
|
|
48
|
+
command?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Selection follows stable identity through refresh, never an unrelated task at the old row index. */
|
|
51
|
+
export declare function renderDashboardScreen(options: DashboardScreenOptions): string;
|
|
52
|
+
//# sourceMappingURL=dashboard-screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-screen.d.ts","sourceRoot":"","sources":["../../src/products/dashboard-screen.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAmB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,iBAAiB,CAAC;IAC9E,SAAS,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AACD,eAAO,MAAM,oBAAoB,QAAO,oBAAgE,CAAC;AACzG,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,WAIN,CAAC;AA8CtC,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,mBAAmB,GAAG,aAAa,EAAE,CAiBrF;AACD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,uBAAuB,EAChC,GAAG,EAAE,IAAI,GACR,aAAa,EAAE,CAsBjB;AACD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,uGAAuG;AACvG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAqM7E"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { ActivityTimelineAliases, activityTaskKey } from "./activity-timeline.js";
|
|
2
|
+
import { cellWidth, truncate } from "./dashboard-render.js";
|
|
3
|
+
export const dashboardScreenState = () => ({ view: "main", offset: 0, items: [] });
|
|
4
|
+
export const dashboardText = (value) => value
|
|
5
|
+
.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g, "")
|
|
6
|
+
.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")
|
|
7
|
+
.replace(/[\p{Cc}\p{Cf}]/gu, " ");
|
|
8
|
+
const clean = (value) => dashboardText(value).replace(/\s+/g, " ").trim();
|
|
9
|
+
function wrapped(lines, width) {
|
|
10
|
+
return lines.flatMap((line) => {
|
|
11
|
+
const result = [];
|
|
12
|
+
let row = "";
|
|
13
|
+
for (const character of dashboardText(line)) {
|
|
14
|
+
if (row && cellWidth(row + character) > width) {
|
|
15
|
+
result.push(row);
|
|
16
|
+
row = "";
|
|
17
|
+
}
|
|
18
|
+
row += character;
|
|
19
|
+
}
|
|
20
|
+
result.push(row);
|
|
21
|
+
return result;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function elapsed(ms) {
|
|
25
|
+
const seconds = Math.max(0, Math.floor(ms / 1000));
|
|
26
|
+
return `${Math.floor(seconds / 60)}:${String(seconds % 60).padStart(2, "0")}`;
|
|
27
|
+
}
|
|
28
|
+
const friendlyStatus = (status) => ({
|
|
29
|
+
active: "Running",
|
|
30
|
+
running: "Running",
|
|
31
|
+
starting: "Starting",
|
|
32
|
+
authorised: "Approved",
|
|
33
|
+
"needs-you": "Needs you",
|
|
34
|
+
completed: "Finished",
|
|
35
|
+
finished: "Finished",
|
|
36
|
+
failed: "Failed",
|
|
37
|
+
refused: "Blocked",
|
|
38
|
+
incomplete: "Incomplete",
|
|
39
|
+
cancelled: "Canceled",
|
|
40
|
+
historical: "Recorded",
|
|
41
|
+
})[status] ?? status;
|
|
42
|
+
const versionStatus = (row) => {
|
|
43
|
+
if (row.state === "reload-required")
|
|
44
|
+
return row.id === "pi" ? "Restart needed" : "Reload needed";
|
|
45
|
+
if (row.state === "not-reported")
|
|
46
|
+
return "Loaded version unknown";
|
|
47
|
+
if (row.state === "multiple")
|
|
48
|
+
return "Multiple sources";
|
|
49
|
+
if (row.state === "current" && row.loadedVersion && row.loadedVersion === row.installedVersion)
|
|
50
|
+
return "Up to date on disk";
|
|
51
|
+
return "Unavailable";
|
|
52
|
+
};
|
|
53
|
+
const attention = (status) => ["failed", "refused", "incomplete"].includes(status);
|
|
54
|
+
const active = (status) => ["active", "running", "starting", "authorised", "needs-you"].includes(status);
|
|
55
|
+
export function ledgerDashboardItems(projection) {
|
|
56
|
+
return projection.nodes.map((node) => ({
|
|
57
|
+
key: node.executionId,
|
|
58
|
+
label: node.agentName || "Governed execution",
|
|
59
|
+
status: node.state,
|
|
60
|
+
elapsed: elapsed(node.durationMs),
|
|
61
|
+
agent: true,
|
|
62
|
+
details: [
|
|
63
|
+
`Execution: ${node.executionId}`,
|
|
64
|
+
`State: ${friendlyStatus(node.state)} (observation, not acceptance)`,
|
|
65
|
+
`Grant: ${node.effectiveGrant.join(", ") || "none"}`,
|
|
66
|
+
...(node.workspace ? [`Workspace: ${node.workspace.id} (${node.workspace.access})`] : []),
|
|
67
|
+
...(node.runtime?.herdrPaneId ? [`Pane: ${node.runtime.herdrPaneId}`] : []),
|
|
68
|
+
...(node.correlation?.phase ? [`Phase: ${node.correlation.phase}`] : []),
|
|
69
|
+
...(node.executor ? [`Executor: ${node.executor}`] : []),
|
|
70
|
+
],
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
export function activityDashboardItems(timeline, aliases, now) {
|
|
74
|
+
return timeline.tasks.map((task) => ({
|
|
75
|
+
key: activityTaskKey(task.rootId, task.id),
|
|
76
|
+
taskKey: activityTaskKey(task.rootId, task.id),
|
|
77
|
+
label: `${task.agent || "User turn"} [${aliases.selector(task)}]`,
|
|
78
|
+
status: task.status,
|
|
79
|
+
elapsed: elapsed(Date.parse(task.endedAt ?? now.toISOString()) - Date.parse(task.startedAt)),
|
|
80
|
+
agent: Boolean(task.agent || task.agents.length),
|
|
81
|
+
skills: task.skills.length > 0,
|
|
82
|
+
details: [
|
|
83
|
+
`Task: ${aliases.selector(task)}`,
|
|
84
|
+
`State: ${friendlyStatus(task.status)} (observation, not acceptance)`,
|
|
85
|
+
...(task.parentTaskId ? [`Parent: ${task.parentTaskId}`] : []),
|
|
86
|
+
...(task.model ? [`Model: ${task.model}`] : []),
|
|
87
|
+
...(task.thinking ? [`Thinking: ${task.thinking}`] : []),
|
|
88
|
+
...task.skills.map((skill) => `Skill ${skill.name}: ${skill.active ? "declared active" : skill.read ? "read" : "available"}${skill.superseded ? ", superseded" : ""}`),
|
|
89
|
+
...(task.prompt || task.final ? ["p prompt / f final (retained content only)"] : []),
|
|
90
|
+
],
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
/** Selection follows stable identity through refresh, never an unrelated task at the old row index. */
|
|
94
|
+
export function renderDashboardScreen(options) {
|
|
95
|
+
const width = Math.max(1, Math.floor(options.width)), height = Math.max(1, Math.floor(options.height));
|
|
96
|
+
const { screen, session } = options, pending = session?.pendingApprovals ?? [];
|
|
97
|
+
const approvals = pending.map((approval) => ({
|
|
98
|
+
key: `approval:${approval.id}`,
|
|
99
|
+
label: `${approval.subject} · ${approval.capability.replace(/^tool:/, "")}`,
|
|
100
|
+
status: "needs-you",
|
|
101
|
+
elapsed: "",
|
|
102
|
+
approval: true,
|
|
103
|
+
details: [
|
|
104
|
+
`Approval: ${approval.id}`,
|
|
105
|
+
`Subject: ${approval.subject}`,
|
|
106
|
+
`Capability: ${approval.capability}`,
|
|
107
|
+
"Waiting for Daddy permission in the owner session.",
|
|
108
|
+
"Use the owner's prompt, or a to enable Auto.",
|
|
109
|
+
],
|
|
110
|
+
}));
|
|
111
|
+
const allItems = [...approvals, ...options.items];
|
|
112
|
+
const items = allItems.filter((item) => options.filter === "agents"
|
|
113
|
+
? item.agent
|
|
114
|
+
: options.filter === "skills"
|
|
115
|
+
? item.skills
|
|
116
|
+
: options.filter === "needs-you"
|
|
117
|
+
? item.status === "needs-you"
|
|
118
|
+
: true);
|
|
119
|
+
const live = items.filter((item) => active(item.status)), needsAttention = items.filter((item) => attention(item.status)), past = items.filter((item) => !active(item.status) && !attention(item.status)).reverse();
|
|
120
|
+
screen.items = [...live, ...needsAttention, ...(options.history ? past : [])];
|
|
121
|
+
if (screen.view === "details" && !screen.items.some((item) => item.key === screen.selectedKey)) {
|
|
122
|
+
const detail = items.find((item) => item.key === screen.selectedKey);
|
|
123
|
+
if (detail)
|
|
124
|
+
screen.items.push(detail);
|
|
125
|
+
}
|
|
126
|
+
if (!screen.items.some((item) => item.key === screen.selectedKey))
|
|
127
|
+
screen.selectedKey = screen.items[0]?.key;
|
|
128
|
+
const selectedIndex = screen.items.findIndex((item) => item.key === screen.selectedKey), selected = screen.items[selectedIndex];
|
|
129
|
+
screen.versionRows = session?.versions?.rows ?? [];
|
|
130
|
+
if (!screen.versionRows.some((row) => row.id === screen.versionId))
|
|
131
|
+
screen.versionId = screen.versionRows[0]?.id;
|
|
132
|
+
const selectedVersion = screen.versionRows.find((row) => row.id === screen.versionId);
|
|
133
|
+
const mode = session ? `Auto ${session.auto.enabled ? "ON" : "OFF"}` : "Auto unavailable";
|
|
134
|
+
const header = `PI DADDY | ${mode}${options.pending ? " …" : session ? " [a]" : ""}`;
|
|
135
|
+
const footer = options.command !== undefined
|
|
136
|
+
? [`: ${clean(options.command)}`]
|
|
137
|
+
: screen.view === "main" || screen.view === "versions"
|
|
138
|
+
? ["↑↓ select · Enter details · a Auto", "m models · v versions · Tab filter · ?"]
|
|
139
|
+
: [
|
|
140
|
+
"↑↓ scroll · Esc back · a Auto",
|
|
141
|
+
screen.view === "details" ? "p prompt · f final · : command · ? help" : ": command · ? help",
|
|
142
|
+
];
|
|
143
|
+
const fixed = [
|
|
144
|
+
header,
|
|
145
|
+
session
|
|
146
|
+
? `Permissions connected${pending.length ? ` · ${pending.length} needs you` : ""}`
|
|
147
|
+
: "Permission controls disconnected",
|
|
148
|
+
];
|
|
149
|
+
if (options.notice || options.problem)
|
|
150
|
+
fixed.push(`! ${clean(options.notice || options.problem || "")}`);
|
|
151
|
+
const body = [];
|
|
152
|
+
if (screen.view === "help")
|
|
153
|
+
body.push("DASHBOARD KEYS", "↑/↓ or j/k: select; Enter/d: details", "a: toggle Daddy permission Auto", "m: session models; v: ecosystem versions", "h: show/hide finished history", "Tab: Everything / Agents / Skills / Needs-you", "p/f: selected retained prompt/final", ": opens commands (legacy selectors and m edits)", "Esc: back; q/Ctrl-C: close dashboard", "Auto changes future Daddy permission handling.", "OFF does not cancel already admitted work.", "Auto does not enable JEV or change LoRA consent.", "Finished means observed completion, not acceptance.");
|
|
154
|
+
else if (screen.view === "versions" || screen.view === "version-details") {
|
|
155
|
+
body.push("VERSIONS");
|
|
156
|
+
if (!session?.versions)
|
|
157
|
+
body.push("Owner has not reported versions.");
|
|
158
|
+
else if (screen.view === "versions") {
|
|
159
|
+
body.push("Loaded -> on disk");
|
|
160
|
+
for (const row of screen.versionRows)
|
|
161
|
+
body.push(`${row.id === screen.versionId ? ">" : " "} ${row.label}: ${row.loadedVersion ?? "?"} -> ${row.installedVersion ?? "?"}`, ` ${versionStatus(row)}`);
|
|
162
|
+
if (session.versions.note)
|
|
163
|
+
body.push(session.versions.note);
|
|
164
|
+
}
|
|
165
|
+
else if (selectedVersion) {
|
|
166
|
+
body.push(`${selectedVersion.label}: ${versionStatus(selectedVersion)}`, `Loaded: ${selectedVersion.loadedVersion ?? "not reported"}`, `Installed: ${selectedVersion.installedVersion ?? "unavailable"}`, `Source: ${selectedVersion.source ?? "unavailable"}`, `Path: ${selectedVersion.path ?? "unavailable"}`, "", "MANAGE · run in a terminal", ...selectedVersion.commands);
|
|
167
|
+
if (selectedVersion.note)
|
|
168
|
+
body.push(selectedVersion.note);
|
|
169
|
+
if (session.versions.note)
|
|
170
|
+
body.push(session.versions.note);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else if (screen.view === "models") {
|
|
174
|
+
body.push("SESSION MODELS");
|
|
175
|
+
if (!session)
|
|
176
|
+
body.push("Connect from /grants dashboard to edit models.");
|
|
177
|
+
for (const row of session?.rows ?? [])
|
|
178
|
+
body.push(`${row.definition}: ${row.model}`, ` ${row.thinking} · ${row.source}`);
|
|
179
|
+
body.push(": m <definition|all> <provider:model> <thinking>");
|
|
180
|
+
}
|
|
181
|
+
else if (screen.view === "details") {
|
|
182
|
+
body.push(selected ? `${selected.label} · ${friendlyStatus(selected.status)}` : "No selected task", ...(selected?.details ?? []));
|
|
183
|
+
if (options.content)
|
|
184
|
+
body.push("", options.content.title, ...options.content.text.split(/\r?\n/));
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
const requestFinished = options.currentStatus && !active(options.currentStatus);
|
|
188
|
+
body.push(options.current
|
|
189
|
+
? requestFinished
|
|
190
|
+
? `LATEST REQUEST · ${friendlyStatus(options.currentStatus)}`
|
|
191
|
+
: "CURRENT REQUEST"
|
|
192
|
+
: "CURRENT WORK", clean(options.current ?? live.find((item) => !item.approval)?.label ?? "No active work"), "");
|
|
193
|
+
const rows = [];
|
|
194
|
+
let group;
|
|
195
|
+
for (const item of screen.items) {
|
|
196
|
+
const next = item.approval
|
|
197
|
+
? "NEEDS YOU"
|
|
198
|
+
: attention(item.status)
|
|
199
|
+
? "NEEDS ATTENTION"
|
|
200
|
+
: active(item.status)
|
|
201
|
+
? `WORK IN PROGRESS · ${live.filter((value) => !value.approval).length} active`
|
|
202
|
+
: "HISTORY";
|
|
203
|
+
if (next !== group) {
|
|
204
|
+
rows.push({ text: next });
|
|
205
|
+
group = next;
|
|
206
|
+
}
|
|
207
|
+
const tail = `${friendlyStatus(item.status)} ${item.elapsed}`.trim(), labelWidth = Math.max(1, width - tail.length - 4);
|
|
208
|
+
rows.push({
|
|
209
|
+
key: item.key,
|
|
210
|
+
text: `${item.key === screen.selectedKey ? ">" : " "} ${truncate(clean(item.label), labelWidth)} ${tail}`,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
const hidden = !options.history ? past.length : 0;
|
|
214
|
+
const history = hidden ? `${hidden} finished · h shows history` : options.history ? "h hides history" : "";
|
|
215
|
+
const available = Math.max(0, height - fixed.length - footer.length - body.length - (history ? 1 : 0));
|
|
216
|
+
const rowIndex = rows.findIndex((row) => row.key === selected?.key);
|
|
217
|
+
const start = Math.max(0, rowIndex - available + 1);
|
|
218
|
+
body.push(...rows.slice(start, start + available).map((row) => row.text));
|
|
219
|
+
if (!rows.length)
|
|
220
|
+
body.push(options.filter && options.filter !== "everything" ? "No matching active work." : "No work is running.");
|
|
221
|
+
if (history)
|
|
222
|
+
body.push(history);
|
|
223
|
+
}
|
|
224
|
+
const detailBody = screen.view === "main" || screen.view === "versions" ? body : wrapped(body, width);
|
|
225
|
+
const room = Math.max(0, height - fixed.length - footer.length);
|
|
226
|
+
if (screen.view === "versions" && selectedVersion && room > 0) {
|
|
227
|
+
const row = 2 + screen.versionRows.findIndex((value) => value.id === screen.versionId) * 2;
|
|
228
|
+
if (row < screen.offset)
|
|
229
|
+
screen.offset = row;
|
|
230
|
+
else if (row + 1 >= screen.offset + room)
|
|
231
|
+
screen.offset = Math.max(0, row + 2 - room);
|
|
232
|
+
}
|
|
233
|
+
const offset = screen.view === "main" ? 0 : Math.max(0, Math.min(screen.offset, Math.max(0, detailBody.length - room)));
|
|
234
|
+
screen.offset = offset;
|
|
235
|
+
const lines = [...fixed, ...detailBody.slice(offset, offset + room)];
|
|
236
|
+
while (lines.length < height - footer.length)
|
|
237
|
+
lines.push("");
|
|
238
|
+
const output = height < fixed.length + footer.length
|
|
239
|
+
? fixed.slice(0, height)
|
|
240
|
+
: [...lines.slice(0, Math.max(0, height - footer.length)), ...footer].slice(0, height);
|
|
241
|
+
return output
|
|
242
|
+
.map((line, index) => {
|
|
243
|
+
const safe = truncate(dashboardText(line), width);
|
|
244
|
+
if (!options.color)
|
|
245
|
+
return safe;
|
|
246
|
+
const section = /^(CURRENT REQUEST|LATEST REQUEST|CURRENT WORK|NEEDS YOU|NEEDS ATTENTION|WORK IN PROGRESS|HISTORY|VERSIONS|SESSION MODELS|DASHBOARD KEYS|MANAGE)/.test(safe);
|
|
247
|
+
const code = index === 0
|
|
248
|
+
? "1;36"
|
|
249
|
+
: safe.startsWith("!")
|
|
250
|
+
? "33"
|
|
251
|
+
: safe.startsWith(">")
|
|
252
|
+
? "36"
|
|
253
|
+
: section
|
|
254
|
+
? "1"
|
|
255
|
+
: index === 1 || index >= height - footer.length
|
|
256
|
+
? "90"
|
|
257
|
+
: undefined;
|
|
258
|
+
return code ? `\u001b[${code}m${safe}\u001b[0m` : safe;
|
|
259
|
+
})
|
|
260
|
+
.join("\n");
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=dashboard-screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-screen.js","sourceRoot":"","sources":["../../src/products/dashboard-screen.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAuB5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAyB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACzG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAC7C,KAAK;KACF,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;KACjD,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC;KACvC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AACtC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAClF,SAAS,OAAO,CAAC,KAAe,EAAE,KAAa;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,MAAM,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,GAAG,EAAE,CAAC;YACX,CAAC;YACD,GAAG,IAAI,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AACD,SAAS,OAAO,CAAC,EAAU;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAChF,CAAC;AACD,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE,CACxC,CAAC;IACC,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,WAAW;IACxB,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,UAAU;CACvB,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AACvB,MAAM,aAAa,GAAG,CAAC,GAAwB,EAAU,EAAE;IACzD,IAAI,GAAG,CAAC,KAAK,KAAK,iBAAiB;QAAE,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC;IACjG,IAAI,GAAG,CAAC,KAAK,KAAK,cAAc;QAAE,OAAO,wBAAwB,CAAC;IAClE,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,kBAAkB,CAAC;IACxD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC,gBAAgB;QAC5F,OAAO,oBAAoB,CAAC;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3F,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjH,MAAM,UAAU,oBAAoB,CAAC,UAA+B;IAClE,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,GAAG,EAAE,IAAI,CAAC,WAAW;QACrB,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,oBAAoB;QAC7C,MAAM,EAAE,IAAI,CAAC,KAAK;QAClB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC,KAAK,EAAE,IAAI;QACX,OAAO,EAAE;YACP,cAAc,IAAI,CAAC,WAAW,EAAE;YAChC,UAAU,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,gCAAgC;YACpE,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;YACpD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AACD,MAAM,UAAU,sBAAsB,CACpC,QAA0B,EAC1B,OAAgC,EAChC,GAAS;IAET,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9C,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;QACjE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAChD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC9B,OAAO,EAAE;YACP,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACjC,UAAU,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,gCAAgC;YACrE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAChB,CAAC,KAAK,EAAE,EAAE,CACR,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1I;YACD,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrF;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAkBD,uGAAuG;AACvG,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAClD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EACjC,OAAO,GAAG,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAoB,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5D,GAAG,EAAE,YAAY,QAAQ,CAAC,EAAE,EAAE;QAC9B,KAAK,EAAE,GAAG,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE;QAC3E,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP,aAAa,QAAQ,CAAC,EAAE,EAAE;YAC1B,YAAY,QAAQ,CAAC,OAAO,EAAE;YAC9B,eAAe,QAAQ,CAAC,UAAU,EAAE;YACpC,oDAAoD;YACpD,8CAA8C;SAC/C;KACF,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrC,OAAO,CAAC,MAAM,KAAK,QAAQ;QACzB,CAAC,CAAC,IAAI,CAAC,KAAK;QACZ,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,MAAM;YACb,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW;gBAC9B,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW;gBAC7B,CAAC,CAAC,IAAI,CACb,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACtD,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC/D,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3F,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,MAAM;YAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC7G,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,EACrF,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,CAAC,WAAW,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC;QAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjH,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC1F,MAAM,MAAM,GAAG,cAAc,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrF,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,KAAK,SAAS;QAC3B,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;YACpD,CAAC,CAAC,CAAC,oCAAoC,EAAE,wCAAwC,CAAC;YAClF,CAAC,CAAC;gBACE,+BAA+B;gBAC/B,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,oBAAoB;aAC7F,CAAC;IACV,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,OAAO;YACL,CAAC,CAAC,wBAAwB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;YAClF,CAAC,CAAC,kCAAkC;KACvC,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACzG,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QACxB,IAAI,CAAC,IAAI,CACP,gBAAgB,EAChB,sCAAsC,EACtC,iCAAiC,EACjC,0CAA0C,EAC1C,+BAA+B,EAC/B,+CAA+C,EAC/C,qCAAqC,EACrC,iDAAiD,EACjD,sCAAsC,EACtC,gDAAgD,EAChD,4CAA4C,EAC5C,kDAAkD,EAClD,qDAAqD,CACtD,CAAC;SACC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;aACjE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW;gBAClC,IAAI,CAAC,IAAI,CACP,GAAG,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,aAAa,IAAI,GAAG,OAAO,GAAG,CAAC,gBAAgB,IAAI,GAAG,EAAE,EACxH,KAAK,aAAa,CAAC,GAAG,CAAC,EAAE,CAC1B,CAAC;YACJ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CACP,GAAG,eAAe,CAAC,KAAK,KAAK,aAAa,CAAC,eAAe,CAAC,EAAE,EAC7D,WAAW,eAAe,CAAC,aAAa,IAAI,cAAc,EAAE,EAC5D,cAAc,eAAe,CAAC,gBAAgB,IAAI,aAAa,EAAE,EACjE,WAAW,eAAe,CAAC,MAAM,IAAI,aAAa,EAAE,EACpD,SAAS,eAAe,CAAC,IAAI,IAAI,aAAa,EAAE,EAChD,EAAE,EACF,4BAA4B,EAC5B,GAAG,eAAe,CAAC,QAAQ,CAC5B,CAAC;YACF,IAAI,eAAe,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,IAAI,IAAI,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CACP,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,MAAM,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EACxF,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAC7B,CAAC;QACF,IAAI,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpG,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,OAAO;YACb,CAAC,CAAC,eAAe;gBACf,CAAC,CAAC,oBAAoB,cAAc,CAAC,OAAO,CAAC,aAAc,CAAC,EAAE;gBAC9D,CAAC,CAAC,iBAAiB;YACrB,CAAC,CAAC,cAAc,EAClB,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,gBAAgB,CAAC,EACxF,EAAE,CACH,CAAC;QACF,MAAM,IAAI,GAAqC,EAAE,CAAC;QAClD,IAAI,KAAyB,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;gBACxB,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;oBACtB,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;wBACnB,CAAC,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,SAAS;wBAC/E,CAAC,CAAC,SAAS,CAAC;YAClB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1B,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAClE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC;gBACR,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE;aAC3G,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,6BAA6B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACpH,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,eAAe,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3F,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;aACxC,IAAI,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,GACV,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QACnC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3F,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,OAAO,GACX,iJAAiJ,CAAC,IAAI,CACpJ,IAAI,CACL,CAAC;QACJ,MAAM,IAAI,GACR,KAAK,KAAK,CAAC;YACT,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACpB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBACpB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,OAAO;wBACP,CAAC,CAAC,GAAG;wBACL,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM;4BAC9C,CAAC,CAAC,IAAI;4BACN,CAAC,CAAC,SAAS,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EcosystemVersions } from "./ecosystem-versions.ts";
|
|
1
2
|
export interface DashboardSessionSnapshot {
|
|
2
3
|
rows: Array<{
|
|
3
4
|
definition: string;
|
|
@@ -6,11 +7,42 @@ export interface DashboardSessionSnapshot {
|
|
|
6
7
|
source: string;
|
|
7
8
|
}>;
|
|
8
9
|
cost: number | null;
|
|
10
|
+
activity?: {
|
|
11
|
+
rootId: string;
|
|
12
|
+
path: string;
|
|
13
|
+
taskId: string;
|
|
14
|
+
};
|
|
15
|
+
versions?: EcosystemVersions;
|
|
16
|
+
auto: {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
source: "default" | "environment" | "session";
|
|
19
|
+
};
|
|
20
|
+
pendingApprovals: Array<{
|
|
21
|
+
id: string;
|
|
22
|
+
subject: string;
|
|
23
|
+
capability: string;
|
|
24
|
+
}>;
|
|
9
25
|
}
|
|
10
|
-
export
|
|
26
|
+
export type DashboardSessionAction = {
|
|
11
27
|
action: "get";
|
|
12
28
|
} | {
|
|
13
29
|
action: "set";
|
|
14
30
|
edits: string;
|
|
15
|
-
}
|
|
31
|
+
} | {
|
|
32
|
+
action: "set-auto";
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
};
|
|
35
|
+
export declare function dashboardSessionRequest(socketPath: string, token: string, request: DashboardSessionAction): Promise<DashboardSessionSnapshot>;
|
|
36
|
+
/** A slow status poll cannot overwrite a newer acknowledged mutation. Failed requests expose no guessed mode. */
|
|
37
|
+
export declare function createDashboardConnection(request?: (action: DashboardSessionAction) => Promise<DashboardSessionSnapshot>): {
|
|
38
|
+
state: {
|
|
39
|
+
snapshot?: DashboardSessionSnapshot;
|
|
40
|
+
pending: boolean;
|
|
41
|
+
error?: string;
|
|
42
|
+
};
|
|
43
|
+
refresh(): Promise<void>;
|
|
44
|
+
change(action: Exclude<DashboardSessionAction, {
|
|
45
|
+
action: "get";
|
|
46
|
+
}>): Promise<boolean>;
|
|
47
|
+
};
|
|
16
48
|
//# sourceMappingURL=dashboard-session-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-session-client.d.ts","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboard-session-client.d.ts","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAAA;KAAE,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,MAAM,MAAM,sBAAsB,GAChC;IAAE,MAAM,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAElG,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CA8BnC;AAED,iHAAiH;AACjH,wBAAgB,yBAAyB,CACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,wBAAwB,CAAC;;mBAErD,wBAAwB;iBAAW,OAAO;gBAAU,MAAM;;;mBAoB7D,OAAO,CAAC,sBAAsB,EAAE;QAAE,MAAM,EAAE,KAAK,CAAA;KAAE,CAAC;EAiB1E"}
|
|
@@ -16,6 +16,12 @@ export async function dashboardSessionRequest(socketPath, token, request) {
|
|
|
16
16
|
const parsed = JSON.parse(output);
|
|
17
17
|
if (!parsed.ok)
|
|
18
18
|
throw new Error(parsed.error ?? "dashboard session request failed");
|
|
19
|
+
if (!parsed.auto ||
|
|
20
|
+
typeof parsed.auto.enabled !== "boolean" ||
|
|
21
|
+
!["default", "environment", "session"].includes(parsed.auto.source) ||
|
|
22
|
+
!Array.isArray(parsed.pendingApprovals) ||
|
|
23
|
+
!Array.isArray(parsed.rows))
|
|
24
|
+
throw new Error("dashboard owner does not provide compatible permission controls");
|
|
19
25
|
resolve(parsed);
|
|
20
26
|
}
|
|
21
27
|
catch (error) {
|
|
@@ -25,4 +31,49 @@ export async function dashboardSessionRequest(socketPath, token, request) {
|
|
|
25
31
|
socket.once("connect", () => socket.write(`${JSON.stringify({ ...request, token })}\n`));
|
|
26
32
|
});
|
|
27
33
|
}
|
|
34
|
+
/** A slow status poll cannot overwrite a newer acknowledged mutation. Failed requests expose no guessed mode. */
|
|
35
|
+
export function createDashboardConnection(request) {
|
|
36
|
+
const state = { pending: false };
|
|
37
|
+
let generation = 0;
|
|
38
|
+
return {
|
|
39
|
+
state,
|
|
40
|
+
async refresh() {
|
|
41
|
+
if (!request || state.pending)
|
|
42
|
+
return;
|
|
43
|
+
const observed = generation;
|
|
44
|
+
try {
|
|
45
|
+
const snapshot = await request({ action: "get" });
|
|
46
|
+
if (generation === observed) {
|
|
47
|
+
state.snapshot = snapshot;
|
|
48
|
+
state.error = undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (generation === observed) {
|
|
53
|
+
state.snapshot = undefined;
|
|
54
|
+
state.error = `Controls unavailable: ${error instanceof Error ? error.message : String(error)}`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
async change(action) {
|
|
59
|
+
if (!request || !state.snapshot || state.pending)
|
|
60
|
+
return false;
|
|
61
|
+
generation++;
|
|
62
|
+
state.pending = true;
|
|
63
|
+
try {
|
|
64
|
+
state.snapshot = await request(action);
|
|
65
|
+
state.error = undefined;
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
state.snapshot = undefined;
|
|
70
|
+
state.error = `Control change not confirmed: ${error instanceof Error ? error.message : String(error)}`;
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
state.pending = false;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
28
79
|
//# sourceMappingURL=dashboard-session-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-session-client.js","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboard-session-client.js","sourceRoot":"","sources":["../../src/products/dashboard-session-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Operator version inventory. These observations do not qualify runtime compatibility. */
|
|
2
|
+
export type EcosystemPackageId = "pi" | "pi-daddy" | "principal-pi-skills" | "skill-harness";
|
|
3
|
+
export interface EcosystemVersionRow {
|
|
4
|
+
id: EcosystemPackageId;
|
|
5
|
+
label: string;
|
|
6
|
+
loadedVersion: string | null;
|
|
7
|
+
installedVersion: string | null;
|
|
8
|
+
source: string | null;
|
|
9
|
+
path: string | null;
|
|
10
|
+
state: "current" | "reload-required" | "not-reported" | "unavailable" | "multiple";
|
|
11
|
+
commands: string[];
|
|
12
|
+
note?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EcosystemVersions {
|
|
15
|
+
rows: EcosystemVersionRow[];
|
|
16
|
+
checkedAt: string;
|
|
17
|
+
note?: string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ecosystem-versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecosystem-versions.d.ts","sourceRoot":"","sources":["../../src/products/ecosystem-versions.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,UAAU,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAC7F,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,kBAAkB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;IACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecosystem-versions.js","sourceRoot":"","sources":["../../src/products/ecosystem-versions.ts"],"names":[],"mappings":""}
|
package/extensions/approvals.ts
CHANGED
|
@@ -236,6 +236,7 @@ export async function obtainApprovals(
|
|
|
236
236
|
hasUI: ctx.hasUI,
|
|
237
237
|
mode: ctx.mode,
|
|
238
238
|
timeoutMs: () => timeoutMsFromEnv(process.env[ENV_APPROVAL_TIMEOUT]),
|
|
239
|
+
autoMode: session.autoMode,
|
|
239
240
|
});
|
|
240
241
|
|
|
241
242
|
const approved = [...pre.approved];
|
|
@@ -286,7 +287,7 @@ export async function obtainApprovals(
|
|
|
286
287
|
// concurrent children under one *Allow for this session* used to write eight lines each claiming a
|
|
287
288
|
// prompt. Same repair as R-46, one level up: stop asserting a human was asked on a path where they
|
|
288
289
|
// were not.
|
|
289
|
-
sources[capability] = outcome.joined ? "session" : "prompt";
|
|
290
|
+
sources[capability] = outcome.source === "auto" ? "auto" : outcome.joined ? "session" : "prompt";
|
|
290
291
|
scopes[capability] = outcome.scope;
|
|
291
292
|
recordedScopes[capability] = outcome.scope;
|
|
292
293
|
if (expectedBinding) bindings[capability] = expectedBinding;
|
|
@@ -359,7 +360,7 @@ export async function obtainApprovals(
|
|
|
359
360
|
delete expiresAt[capability];
|
|
360
361
|
}
|
|
361
362
|
}
|
|
362
|
-
session.publishChildEnv(); //
|
|
363
|
+
if (outcome.source !== "auto") session.publishChildEnv(); // Auto never publishes reusable authority.
|
|
363
364
|
}
|
|
364
365
|
|
|
365
366
|
return {
|
|
@@ -4,6 +4,7 @@ import { createServer, type Server } from "node:net";
|
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
import type { GrantsSession } from "./session.ts";
|
|
7
|
+
import { getDashboardControlState, setAutoApproval } from "./session-auto-mode.ts";
|
|
7
8
|
import { saveSessionModelEdits, sessionModelRows } from "./session-model-prompt.ts";
|
|
8
9
|
|
|
9
10
|
export interface DashboardSessionEndpoint {
|
|
@@ -26,12 +27,20 @@ async function start(session: GrantsSession): Promise<DashboardSessionEndpoint>
|
|
|
26
27
|
const socketPath = join(tmpdir(), `pi-daddy-${process.pid}-${randomBytes(8).toString("hex")}.sock`);
|
|
27
28
|
const token = randomBytes(24).toString("hex");
|
|
28
29
|
const server = createServer((socket) => {
|
|
29
|
-
let input = ""
|
|
30
|
+
let input = "",
|
|
31
|
+
handled = false;
|
|
30
32
|
socket.setEncoding("utf8");
|
|
33
|
+
socket.setTimeout(2_000, () => socket.destroy());
|
|
34
|
+
socket.on("error", () => socket.destroy());
|
|
31
35
|
socket.on("data", (chunk) => {
|
|
36
|
+
if (handled) return;
|
|
32
37
|
input += chunk;
|
|
33
|
-
if (input.length > 16 * 1024)
|
|
38
|
+
if (input.length > 16 * 1024) {
|
|
39
|
+
socket.destroy();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
34
42
|
if (!input.includes("\n")) return;
|
|
43
|
+
handled = true;
|
|
35
44
|
const line = input.slice(0, input.indexOf("\n"));
|
|
36
45
|
void respond(session, token, line)
|
|
37
46
|
.then((value) => socket.end(`${JSON.stringify(value)}\n`))
|
|
@@ -60,9 +69,13 @@ async function start(session: GrantsSession): Promise<DashboardSessionEndpoint>
|
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
async function respond(session: GrantsSession, token: string, line: string): Promise<Record<string, unknown>> {
|
|
63
|
-
const request = JSON.parse(line) as { token?: unknown; action?: unknown; edits?: unknown };
|
|
72
|
+
const request = JSON.parse(line) as { token?: unknown; action?: unknown; edits?: unknown; enabled?: unknown };
|
|
64
73
|
if (request.token !== token) return { ok: false, error: "unauthorised dashboard request" };
|
|
65
|
-
if (request.action === "set") {
|
|
74
|
+
if (request.action === "set-auto") {
|
|
75
|
+
if (typeof request.enabled !== "boolean") return { ok: false, error: "Auto mode requires an explicit boolean" };
|
|
76
|
+
await setAutoApproval(session, request.enabled, "dashboard");
|
|
77
|
+
} else if (request.action === "set") {
|
|
78
|
+
await getDashboardControlState(session);
|
|
66
79
|
if (typeof request.edits !== "string") return { ok: false, error: "dashboard edits must be a string" };
|
|
67
80
|
const invalid = await saveSessionModelEdits(
|
|
68
81
|
session,
|
|
@@ -74,11 +87,26 @@ async function respond(session: GrantsSession, token: string, line: string): Pro
|
|
|
74
87
|
} else if (request.action !== "get") return { ok: false, error: "unknown dashboard action" };
|
|
75
88
|
return {
|
|
76
89
|
ok: true,
|
|
90
|
+
...(await getDashboardControlState(session)),
|
|
91
|
+
...(session.activity ? { activity: { ...session.activity } } : {}),
|
|
77
92
|
rows: sessionModelRows(session, [...session.definitions.keys()].sort()),
|
|
93
|
+
versions: versionSnapshot(session),
|
|
78
94
|
cost: null, // Live complete episode cost is unavailable; retained usage remains in the episode report.
|
|
79
95
|
};
|
|
80
96
|
}
|
|
81
97
|
|
|
98
|
+
function versionSnapshot(session: GrantsSession) {
|
|
99
|
+
try {
|
|
100
|
+
return session.ecosystemVersions?.();
|
|
101
|
+
} catch {
|
|
102
|
+
return {
|
|
103
|
+
rows: [],
|
|
104
|
+
checkedAt: new Date().toISOString(),
|
|
105
|
+
note: "Version inventory unavailable; permission controls remain connected.",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
82
110
|
function close(server: Server, socketPath: string): void {
|
|
83
111
|
server.close();
|
|
84
112
|
void rm(socketPath, { force: true });
|
|
@@ -217,6 +217,8 @@ export function registerChainTool(pi: ExtensionAPI, session: GrantsSession): voi
|
|
|
217
217
|
declined = { request, outcome };
|
|
218
218
|
break;
|
|
219
219
|
}
|
|
220
|
+
// Auto is provisional and belongs to an actual step admission, never the upfront union.
|
|
221
|
+
if (outcome.sources[request.capability] === "auto") continue;
|
|
220
222
|
preApproved.push({
|
|
221
223
|
capability: request.capability,
|
|
222
224
|
subject: request.subject,
|