panopticon-cli 0.4.8 → 0.4.9
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/{agents-54LDKMHR.js → agents-2Q6TCHNN.js} +4 -3
- package/dist/{chunk-VTDDVLCK.js → chunk-45PZFXJM.js} +21 -19
- package/dist/{chunk-VTDDVLCK.js.map → chunk-45PZFXJM.js.map} +1 -1
- package/dist/{chunk-PUR532O7.js → chunk-65DGYSS4.js} +5 -207
- package/dist/chunk-65DGYSS4.js.map +1 -0
- package/dist/chunk-BBCUK6N2.js +241 -0
- package/dist/chunk-BBCUK6N2.js.map +1 -0
- package/dist/{chunk-ZZ3477GY.js → chunk-NRPHRN6M.js} +26 -9
- package/dist/chunk-NRPHRN6M.js.map +1 -0
- package/dist/{chunk-Z24TY3XN.js → chunk-XTXWSLT3.js} +2 -2
- package/dist/{chunk-F7NQZD6H.js → chunk-YOQLBJ7B.js} +2 -2
- package/dist/{chunk-NYVQC3D7.js → chunk-ZAM2Q52Q.js} +9 -2
- package/dist/{chunk-NYVQC3D7.js.map → chunk-ZAM2Q52Q.js.map} +1 -1
- package/dist/cli/index.js +59 -45
- package/dist/cli/index.js.map +1 -1
- package/dist/config-WCEPLNXI.js +15 -0
- package/dist/dashboard/public/assets/{index-DPSUbu4A.js → index-BnjdXycj.js} +109 -109
- package/dist/dashboard/public/assets/{index-CRqsEkmn.css → index-iqMjcW09.css} +1 -1
- package/dist/dashboard/public/index.html +2 -2
- package/dist/dashboard/server.js +6529 -6407
- package/dist/index.d.ts +6 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/{remote-workspace-HI4VML6H.js → remote-workspace-WZVEDYQA.js} +4 -4
- package/dist/{specialist-context-SNCJ7O7G.js → specialist-context-JO4RB7UC.js} +4 -3
- package/dist/{specialist-context-SNCJ7O7G.js.map → specialist-context-JO4RB7UC.js.map} +1 -1
- package/dist/{specialist-logs-A7ODEK2T.js → specialist-logs-7P5EUIUT.js} +4 -3
- package/dist/{specialists-C7XLNSXQ.js → specialists-B4QAT244.js} +4 -3
- package/dist/{traefik-WI3KSRGG.js → traefik-DRNZMPGZ.js} +3 -3
- package/dist/traefik-DRNZMPGZ.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-PUR532O7.js.map +0 -1
- package/dist/chunk-ZZ3477GY.js.map +0 -1
- /package/dist/{agents-54LDKMHR.js.map → agents-2Q6TCHNN.js.map} +0 -0
- /package/dist/{chunk-Z24TY3XN.js.map → chunk-XTXWSLT3.js.map} +0 -0
- /package/dist/{chunk-F7NQZD6H.js.map → chunk-YOQLBJ7B.js.map} +0 -0
- /package/dist/{specialist-logs-A7ODEK2T.js.map → config-WCEPLNXI.js.map} +0 -0
- /package/dist/{remote-workspace-HI4VML6H.js.map → remote-workspace-WZVEDYQA.js.map} +0 -0
- /package/dist/{specialists-C7XLNSXQ.js.map → specialist-logs-7P5EUIUT.js.map} +0 -0
- /package/dist/{traefik-WI3KSRGG.js.map → specialists-B4QAT244.js.map} +0 -0
|
@@ -17,9 +17,10 @@ import {
|
|
|
17
17
|
saveSessionId,
|
|
18
18
|
spawnAgent,
|
|
19
19
|
stopAgent
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-XTXWSLT3.js";
|
|
21
|
+
import "./chunk-65DGYSS4.js";
|
|
22
22
|
import "./chunk-KQAEUOML.js";
|
|
23
|
+
import "./chunk-BBCUK6N2.js";
|
|
23
24
|
import "./chunk-KGPRXDMX.js";
|
|
24
25
|
import "./chunk-ZHC57RCV.js";
|
|
25
26
|
init_agents();
|
|
@@ -42,4 +43,4 @@ export {
|
|
|
42
43
|
spawnAgent,
|
|
43
44
|
stopAgent
|
|
44
45
|
};
|
|
45
|
-
//# sourceMappingURL=agents-
|
|
46
|
+
//# sourceMappingURL=agents-2Q6TCHNN.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
popFromHook,
|
|
8
8
|
pushToHook,
|
|
9
9
|
sendKeys
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-65DGYSS4.js";
|
|
11
11
|
import {
|
|
12
12
|
init_projects,
|
|
13
13
|
projects_exports
|
|
@@ -552,9 +552,9 @@ function recordWake(name, sessionId) {
|
|
|
552
552
|
}
|
|
553
553
|
async function spawnEphemeralSpecialist(projectKey, specialistType, task) {
|
|
554
554
|
ensureProjectSpecialistDir(projectKey, specialistType);
|
|
555
|
-
const { loadContextDigest } = await import("./specialist-context-
|
|
555
|
+
const { loadContextDigest } = await import("./specialist-context-JO4RB7UC.js");
|
|
556
556
|
const contextDigest = loadContextDigest(projectKey, specialistType);
|
|
557
|
-
const { createRunLog: createRunLog2 } = await import("./specialist-logs-
|
|
557
|
+
const { createRunLog: createRunLog2 } = await import("./specialist-logs-7P5EUIUT.js");
|
|
558
558
|
const { runId, filePath: logFilePath } = createRunLog2(
|
|
559
559
|
projectKey,
|
|
560
560
|
specialistType,
|
|
@@ -595,7 +595,7 @@ echo "## Specialist completed task"
|
|
|
595
595
|
`tmux new-session -d -s "${tmuxSession}" "bash '${launcherScript}'"`,
|
|
596
596
|
{ encoding: "utf-8" }
|
|
597
597
|
);
|
|
598
|
-
const { saveAgentRuntimeState } = await import("./agents-
|
|
598
|
+
const { saveAgentRuntimeState } = await import("./agents-2Q6TCHNN.js");
|
|
599
599
|
saveAgentRuntimeState(tmuxSession, {
|
|
600
600
|
state: "active",
|
|
601
601
|
lastActivity: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -777,7 +777,7 @@ async function terminateSpecialist(projectKey, specialistType) {
|
|
|
777
777
|
console.error(`[specialist] Failed to kill tmux session ${tmuxSession}:`, error);
|
|
778
778
|
}
|
|
779
779
|
if (metadata.currentRun) {
|
|
780
|
-
const { finalizeRunLog: finalizeRunLog2 } = await import("./specialist-logs-
|
|
780
|
+
const { finalizeRunLog: finalizeRunLog2 } = await import("./specialist-logs-7P5EUIUT.js");
|
|
781
781
|
try {
|
|
782
782
|
finalizeRunLog2(projectKey, specialistType, metadata.currentRun, {
|
|
783
783
|
status: metadata.lastRunStatus || "incomplete",
|
|
@@ -790,19 +790,19 @@ async function terminateSpecialist(projectKey, specialistType) {
|
|
|
790
790
|
}
|
|
791
791
|
const key = `${projectKey}-${specialistType}`;
|
|
792
792
|
gracePeriodStates.delete(key);
|
|
793
|
-
const { saveAgentRuntimeState } = await import("./agents-
|
|
793
|
+
const { saveAgentRuntimeState } = await import("./agents-2Q6TCHNN.js");
|
|
794
794
|
saveAgentRuntimeState(tmuxSession, {
|
|
795
795
|
state: "suspended",
|
|
796
796
|
lastActivity: (/* @__PURE__ */ new Date()).toISOString()
|
|
797
797
|
});
|
|
798
|
-
const { scheduleDigestGeneration } = await import("./specialist-context-
|
|
798
|
+
const { scheduleDigestGeneration } = await import("./specialist-context-JO4RB7UC.js");
|
|
799
799
|
scheduleDigestGeneration(projectKey, specialistType);
|
|
800
800
|
scheduleLogCleanup(projectKey, specialistType);
|
|
801
801
|
}
|
|
802
802
|
function scheduleLogCleanup(projectKey, specialistType) {
|
|
803
803
|
Promise.resolve().then(async () => {
|
|
804
804
|
try {
|
|
805
|
-
const { cleanupOldLogs: cleanupOldLogs2 } = await import("./specialist-logs-
|
|
805
|
+
const { cleanupOldLogs: cleanupOldLogs2 } = await import("./specialist-logs-7P5EUIUT.js");
|
|
806
806
|
const { getSpecialistRetention } = await import("./projects-ESIB34QQ.js");
|
|
807
807
|
const retention = getSpecialistRetention(projectKey);
|
|
808
808
|
const deleted = cleanupOldLogs2(projectKey, specialistType, { maxDays: retention.max_days, maxRuns: retention.max_runs });
|
|
@@ -981,7 +981,7 @@ async function getSpecialistStatus(name, projectKey) {
|
|
|
981
981
|
const sessionId = getSessionId(name);
|
|
982
982
|
const running = await isRunning(name, projectKey);
|
|
983
983
|
const contextTokens = countContextTokens(name);
|
|
984
|
-
const { getAgentRuntimeState } = await import("./agents-
|
|
984
|
+
const { getAgentRuntimeState } = await import("./agents-2Q6TCHNN.js");
|
|
985
985
|
const tmuxSession = getTmuxSessionName(name, projectKey);
|
|
986
986
|
const runtimeState = getAgentRuntimeState(tmuxSession);
|
|
987
987
|
let state;
|
|
@@ -1173,7 +1173,7 @@ async function wakeSpecialist(name, taskPrompt, options = {}) {
|
|
|
1173
1173
|
sendKeys(tmuxSession, taskPrompt);
|
|
1174
1174
|
}
|
|
1175
1175
|
recordWake(name, sessionId || void 0);
|
|
1176
|
-
const { saveAgentRuntimeState } = await import("./agents-
|
|
1176
|
+
const { saveAgentRuntimeState } = await import("./agents-2Q6TCHNN.js");
|
|
1177
1177
|
saveAgentRuntimeState(tmuxSession, {
|
|
1178
1178
|
state: "active",
|
|
1179
1179
|
lastActivity: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -1197,6 +1197,8 @@ async function wakeSpecialist(name, taskPrompt, options = {}) {
|
|
|
1197
1197
|
}
|
|
1198
1198
|
}
|
|
1199
1199
|
async function wakeSpecialistWithTask(name, task) {
|
|
1200
|
+
const apiPort = process.env.API_PORT || process.env.PORT || "3011";
|
|
1201
|
+
const apiUrl = process.env.DASHBOARD_URL || `http://localhost:${apiPort}`;
|
|
1200
1202
|
let prompt;
|
|
1201
1203
|
switch (name) {
|
|
1202
1204
|
case "merge-agent":
|
|
@@ -1274,17 +1276,17 @@ You MUST execute these curl commands and verify they succeed. Do NOT just descri
|
|
|
1274
1276
|
If issues found:
|
|
1275
1277
|
\`\`\`bash
|
|
1276
1278
|
# EXECUTE THIS - verify you see JSON response with reviewStatus
|
|
1277
|
-
curl -s -X POST
|
|
1279
|
+
curl -s -X POST ${apiUrl}/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"reviewStatus":"blocked","reviewNotes":"[describe issues]"}' | jq .
|
|
1278
1280
|
\`\`\`
|
|
1279
1281
|
Then use send-feedback-to-agent skill to notify issue agent.
|
|
1280
1282
|
|
|
1281
1283
|
If review passes:
|
|
1282
1284
|
\`\`\`bash
|
|
1283
1285
|
# EXECUTE THIS FIRST - verify you see JSON response with reviewStatus:"passed"
|
|
1284
|
-
curl -s -X POST
|
|
1286
|
+
curl -s -X POST ${apiUrl}/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"reviewStatus":"passed"}' | jq .
|
|
1285
1287
|
|
|
1286
1288
|
# THEN EXECUTE THIS - verify you see JSON response with queued task
|
|
1287
|
-
curl -s -X POST
|
|
1289
|
+
curl -s -X POST ${apiUrl}/api/specialists/test-agent/queue -H "Content-Type: application/json" -d '{"issueId":"${task.issueId}","workspace":"${task.workspace}","branch":"${task.branch}"}' | jq .
|
|
1288
1290
|
\`\`\`
|
|
1289
1291
|
|
|
1290
1292
|
\u26A0\uFE0F VERIFICATION: After running each curl, confirm you see valid JSON output. If you get an error, report it.`;
|
|
@@ -1338,13 +1340,13 @@ You MUST execute the appropriate curl command and verify it succeeds. Do NOT jus
|
|
|
1338
1340
|
If NO new regressions (tests PASS):
|
|
1339
1341
|
\`\`\`bash
|
|
1340
1342
|
# EXECUTE THIS - verify you see JSON response with testStatus:"passed"
|
|
1341
|
-
curl -s -X POST
|
|
1343
|
+
curl -s -X POST ${apiUrl}/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"testStatus":"passed","testNotes":"[summary including pre-existing failures if any]"}' | jq .
|
|
1342
1344
|
\`\`\`
|
|
1343
1345
|
|
|
1344
1346
|
If NEW regressions found (tests FAIL):
|
|
1345
1347
|
\`\`\`bash
|
|
1346
1348
|
# EXECUTE THIS - verify you see JSON response with testStatus:"failed"
|
|
1347
|
-
curl -s -X POST
|
|
1349
|
+
curl -s -X POST ${apiUrl}/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"testStatus":"failed","testNotes":"[describe NEW failures only]"}' | jq .
|
|
1348
1350
|
\`\`\`
|
|
1349
1351
|
Then use send-feedback-to-agent skill to notify issue agent of NEW failures only.
|
|
1350
1352
|
|
|
@@ -1360,7 +1362,7 @@ IMPORTANT: Do NOT hand off to merge-agent. Human clicks Merge button when ready.
|
|
|
1360
1362
|
async function wakeSpecialistOrQueue(name, task, options = {}) {
|
|
1361
1363
|
const { priority = "normal", source = "handoff" } = options;
|
|
1362
1364
|
const running = await isRunning(name);
|
|
1363
|
-
const { getAgentRuntimeState } = await import("./agents-
|
|
1365
|
+
const { getAgentRuntimeState } = await import("./agents-2Q6TCHNN.js");
|
|
1364
1366
|
const tmuxSession = getTmuxSessionName(name);
|
|
1365
1367
|
const runtimeState = getAgentRuntimeState(tmuxSession);
|
|
1366
1368
|
const idle = runtimeState?.state === "idle" || runtimeState?.state === "suspended";
|
|
@@ -1391,7 +1393,7 @@ async function wakeSpecialistOrQueue(name, task, options = {}) {
|
|
|
1391
1393
|
};
|
|
1392
1394
|
}
|
|
1393
1395
|
}
|
|
1394
|
-
const { saveAgentRuntimeState } = await import("./agents-
|
|
1396
|
+
const { saveAgentRuntimeState } = await import("./agents-2Q6TCHNN.js");
|
|
1395
1397
|
saveAgentRuntimeState(tmuxSession, {
|
|
1396
1398
|
state: "active",
|
|
1397
1399
|
lastActivity: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -1490,7 +1492,7 @@ async function sendFeedbackToAgent(feedback) {
|
|
|
1490
1492
|
}
|
|
1491
1493
|
const agentSession = `agent-${toIssueId.toLowerCase()}`;
|
|
1492
1494
|
try {
|
|
1493
|
-
const { messageAgent } = await import("./agents-
|
|
1495
|
+
const { messageAgent } = await import("./agents-2Q6TCHNN.js");
|
|
1494
1496
|
const feedbackMessage = formatFeedbackForAgent(fullFeedback);
|
|
1495
1497
|
await messageAgent(agentSession, feedbackMessage);
|
|
1496
1498
|
console.log(`[specialist] Sent feedback from ${fromSpecialist} to ${agentSession}`);
|
|
@@ -1974,4 +1976,4 @@ export {
|
|
|
1974
1976
|
getFeedbackStats,
|
|
1975
1977
|
init_specialists
|
|
1976
1978
|
};
|
|
1977
|
-
//# sourceMappingURL=chunk-
|
|
1979
|
+
//# sourceMappingURL=chunk-45PZFXJM.js.map
|