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.
Files changed (40) hide show
  1. package/dist/{agents-54LDKMHR.js → agents-2Q6TCHNN.js} +4 -3
  2. package/dist/{chunk-VTDDVLCK.js → chunk-45PZFXJM.js} +21 -19
  3. package/dist/{chunk-VTDDVLCK.js.map → chunk-45PZFXJM.js.map} +1 -1
  4. package/dist/{chunk-PUR532O7.js → chunk-65DGYSS4.js} +5 -207
  5. package/dist/chunk-65DGYSS4.js.map +1 -0
  6. package/dist/chunk-BBCUK6N2.js +241 -0
  7. package/dist/chunk-BBCUK6N2.js.map +1 -0
  8. package/dist/{chunk-ZZ3477GY.js → chunk-NRPHRN6M.js} +26 -9
  9. package/dist/chunk-NRPHRN6M.js.map +1 -0
  10. package/dist/{chunk-Z24TY3XN.js → chunk-XTXWSLT3.js} +2 -2
  11. package/dist/{chunk-F7NQZD6H.js → chunk-YOQLBJ7B.js} +2 -2
  12. package/dist/{chunk-NYVQC3D7.js → chunk-ZAM2Q52Q.js} +9 -2
  13. package/dist/{chunk-NYVQC3D7.js.map → chunk-ZAM2Q52Q.js.map} +1 -1
  14. package/dist/cli/index.js +59 -45
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/config-WCEPLNXI.js +15 -0
  17. package/dist/dashboard/public/assets/{index-DPSUbu4A.js → index-BnjdXycj.js} +109 -109
  18. package/dist/dashboard/public/assets/{index-CRqsEkmn.css → index-iqMjcW09.css} +1 -1
  19. package/dist/dashboard/public/index.html +2 -2
  20. package/dist/dashboard/server.js +6529 -6407
  21. package/dist/index.d.ts +6 -1
  22. package/dist/index.js +5 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/{remote-workspace-HI4VML6H.js → remote-workspace-WZVEDYQA.js} +4 -4
  25. package/dist/{specialist-context-SNCJ7O7G.js → specialist-context-JO4RB7UC.js} +4 -3
  26. package/dist/{specialist-context-SNCJ7O7G.js.map → specialist-context-JO4RB7UC.js.map} +1 -1
  27. package/dist/{specialist-logs-A7ODEK2T.js → specialist-logs-7P5EUIUT.js} +4 -3
  28. package/dist/{specialists-C7XLNSXQ.js → specialists-B4QAT244.js} +4 -3
  29. package/dist/{traefik-WI3KSRGG.js → traefik-DRNZMPGZ.js} +3 -3
  30. package/dist/traefik-DRNZMPGZ.js.map +1 -0
  31. package/package.json +1 -1
  32. package/dist/chunk-PUR532O7.js.map +0 -1
  33. package/dist/chunk-ZZ3477GY.js.map +0 -1
  34. /package/dist/{agents-54LDKMHR.js.map → agents-2Q6TCHNN.js.map} +0 -0
  35. /package/dist/{chunk-Z24TY3XN.js.map → chunk-XTXWSLT3.js.map} +0 -0
  36. /package/dist/{chunk-F7NQZD6H.js.map → chunk-YOQLBJ7B.js.map} +0 -0
  37. /package/dist/{specialist-logs-A7ODEK2T.js.map → config-WCEPLNXI.js.map} +0 -0
  38. /package/dist/{remote-workspace-HI4VML6H.js.map → remote-workspace-WZVEDYQA.js.map} +0 -0
  39. /package/dist/{specialists-C7XLNSXQ.js.map → specialist-logs-7P5EUIUT.js.map} +0 -0
  40. /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-Z24TY3XN.js";
21
- import "./chunk-PUR532O7.js";
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-54LDKMHR.js.map
46
+ //# sourceMappingURL=agents-2Q6TCHNN.js.map
@@ -7,7 +7,7 @@ import {
7
7
  popFromHook,
8
8
  pushToHook,
9
9
  sendKeys
10
- } from "./chunk-PUR532O7.js";
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-SNCJ7O7G.js");
555
+ const { loadContextDigest } = await import("./specialist-context-JO4RB7UC.js");
556
556
  const contextDigest = loadContextDigest(projectKey, specialistType);
557
- const { createRunLog: createRunLog2 } = await import("./specialist-logs-A7ODEK2T.js");
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-54LDKMHR.js");
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-A7ODEK2T.js");
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-54LDKMHR.js");
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-SNCJ7O7G.js");
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-A7ODEK2T.js");
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-54LDKMHR.js");
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-54LDKMHR.js");
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 http://localhost:3011/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"reviewStatus":"blocked","reviewNotes":"[describe issues]"}' | jq .
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 http://localhost:3011/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"reviewStatus":"passed"}' | jq .
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 http://localhost:3011/api/specialists/test-agent/queue -H "Content-Type: application/json" -d '{"issueId":"${task.issueId}","workspace":"${task.workspace}","branch":"${task.branch}"}' | jq .
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 http://localhost:3011/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"testStatus":"passed","testNotes":"[summary including pre-existing failures if any]"}' | jq .
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 http://localhost:3011/api/workspaces/${task.issueId}/review-status -H "Content-Type: application/json" -d '{"testStatus":"failed","testNotes":"[describe NEW failures only]"}' | jq .
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-54LDKMHR.js");
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-54LDKMHR.js");
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-54LDKMHR.js");
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-VTDDVLCK.js.map
1979
+ //# sourceMappingURL=chunk-45PZFXJM.js.map