panopticon-cli 0.6.0 → 0.6.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/cli/index.js +19 -19
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/{event-store-BtuZCLHu.js → event-store-D7kLBd07.js} +1 -1
- package/dist/dashboard/{event-store-OS5jH3Eu.js → event-store-O9q0Gweh.js} +2 -2
- package/dist/dashboard/{event-store-OS5jH3Eu.js.map → event-store-O9q0Gweh.js.map} +1 -1
- package/dist/dashboard/{inspect-agent-CwT4mrvV.js → inspect-agent-B57kGDUV.js} +3 -3
- package/dist/dashboard/{inspect-agent-CwT4mrvV.js.map → inspect-agent-B57kGDUV.js.map} +1 -1
- package/dist/dashboard/{issue-service-singleton-z78bbRiO.js → issue-service-singleton-DQK42EqH.js} +1 -1
- package/dist/dashboard/{issue-service-singleton-0n9hcF71.js → issue-service-singleton-sb2HkB9f.js} +2 -2
- package/dist/dashboard/{issue-service-singleton-0n9hcF71.js.map → issue-service-singleton-sb2HkB9f.js.map} +1 -1
- package/dist/dashboard/{lifecycle-B6d3AE3n.js → lifecycle-ZTYdrr2O.js} +1 -1
- package/dist/dashboard/{merge-agent-DaIEvGJG.js → merge-agent-GLtMEsTu.js} +1 -1
- package/dist/dashboard/{merge-agent-CmqR1MFf.js → merge-agent-twroFuAh.js} +2 -2
- package/dist/dashboard/{merge-agent-CmqR1MFf.js.map → merge-agent-twroFuAh.js.map} +1 -1
- package/dist/dashboard/{projection-cache-Bkzs_90o.js → projection-cache-DQ9zegkK.js} +10 -10
- package/dist/dashboard/projection-cache-DQ9zegkK.js.map +1 -0
- package/dist/dashboard/public/assets/{dist-D-q87oB4.js → dist-C2sRcZJv.js} +1 -1
- package/dist/dashboard/public/assets/{index--G6_upSx.js → index-BCLmEMRf.js} +41 -41
- package/dist/dashboard/public/assets/index-BEdq7CFf.css +1 -0
- package/dist/dashboard/public/index.html +2 -2
- package/dist/dashboard/{review-status-DqJZDthU.js → review-status-CK3eBGyb.js} +1 -1
- package/dist/dashboard/{review-status-LQATWF6L.js → review-status-CV55Tl-n.js} +2 -2
- package/dist/dashboard/{review-status-LQATWF6L.js.map → review-status-CV55Tl-n.js.map} +1 -1
- package/dist/dashboard/server.js +85 -85
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/{specialist-context-IX8ZZBxy.js → specialist-context-ColzlmGE.js} +2 -2
- package/dist/dashboard/{specialist-context-IX8ZZBxy.js.map → specialist-context-ColzlmGE.js.map} +1 -1
- package/dist/dashboard/{specialist-logs-BvOQ3XPt.js → specialist-logs-BhmDpFIq.js} +1 -1
- package/dist/dashboard/{specialists-C7Fyhq_j.js → specialists-C6s3U6tX.js} +21 -7
- package/dist/dashboard/specialists-C6s3U6tX.js.map +1 -0
- package/dist/dashboard/{specialists-B4aDa5xP.js → specialists-Cny632-T.js} +1 -1
- package/dist/dashboard/{test-agent-queue-C0WrVdrJ.js → test-agent-queue-tqI4VDsu.js} +3 -3
- package/dist/dashboard/{test-agent-queue-C0WrVdrJ.js.map → test-agent-queue-tqI4VDsu.js.map} +1 -1
- package/dist/dashboard/workflows-B2ARUpOa.js +2 -0
- package/dist/dashboard/{workflows-Cj6tzch6.js → workflows-N1UTipYl.js} +3 -3
- package/dist/dashboard/{workflows-Cj6tzch6.js.map → workflows-N1UTipYl.js.map} +1 -1
- package/dist/{merge-agent-BCPyotWG.js → merge-agent-VQH9z9t8.js} +2 -2
- package/dist/{merge-agent-BCPyotWG.js.map → merge-agent-VQH9z9t8.js.map} +1 -1
- package/dist/{review-status-p_HOugvo.js → review-status-2TdtHNcs.js} +1 -1
- package/dist/{review-status-BbY22dtx.js → review-status-Bm1bWNEa.js} +2 -2
- package/dist/{review-status-BbY22dtx.js.map → review-status-Bm1bWNEa.js.map} +1 -1
- package/dist/{specialist-context-CRBBW-z5.js → specialist-context-BdNFsfMG.js} +2 -2
- package/dist/{specialist-context-CRBBW-z5.js.map → specialist-context-BdNFsfMG.js.map} +1 -1
- package/dist/{specialist-logs-m0UvPm3F.js → specialist-logs-CLztE_bE.js} +1 -1
- package/dist/{specialists-ldNesMhg.js → specialists-DEKqgkxp.js} +21 -7
- package/dist/specialists-DEKqgkxp.js.map +1 -0
- package/dist/{specialists-DXDDLqoY.js → specialists-aUoUVWsN.js} +1 -1
- package/package.json +1 -1
- package/scripts/record-cost-event.js +15 -0
- package/scripts/record-cost-event.js.map +1 -1
- package/scripts/record-cost-event.ts +2 -0
- package/scripts/work-agent-stop-hook +26 -0
- package/dist/dashboard/projection-cache-Bkzs_90o.js.map +0 -1
- package/dist/dashboard/public/assets/index-CjpnhB4Q.css +0 -1
- package/dist/dashboard/specialists-C7Fyhq_j.js.map +0 -1
- package/dist/dashboard/workflows-BsUDQntr.js +0 -2
- package/dist/specialists-ldNesMhg.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -17,9 +17,9 @@ import { n as resolveGitHubIssue, r as resolveTrackerType, t as isGitHubIssue }
|
|
|
17
17
|
import { a as isShadowed, c as needsSync, d as updateTrackerStatusCache, i as getUnsyncedHistory, n as getPendingSyncCount, o as listShadowedIssues, r as getShadowState, s as markAsSynced, t as createShadowState, u as updateShadowState } from "../shadow-state-CFFHf05M.js";
|
|
18
18
|
import { a as findRemoteWorkspaceMetadata, i as deleteWorkspaceMetadata, n as isRemoteAvailable, o as loadWorkspaceMetadata, r as WORKSPACES_DIR, s as saveWorkspaceMetadata, t as createFlyProviderFromConfig } from "../remote-CkLBqLJc.js";
|
|
19
19
|
import { a as spawnRemoteAgent, n as isRemoteAgentRunning, o as createFlyProvider } from "../remote-agents-C5Bd2fgt.js";
|
|
20
|
-
import { At as formatCost, Bt as init_io, Ct as getProjectDirs, D as getSpecialistStatus, Dt as checkBudget, Et as parseClaudeSession, Ft as getWeeklySummary, H as recordWake, Ht as updateItemStatus, It as init_cost, Lt as readIssueCosts, Mt as getAllBudgets, Nt as getDailySummary, O as getTmuxSessionName, Ot as createBudget, Pt as getMonthlySummary, Rt as readTodayCosts, T as getSpecialistMetadata, Tt as init_jsonl_parser, Ut as updateSubItemStatus, Vt as readWorkspacePlan, Y as spawnEphemeralSpecialist, a as completeSpecialistTask, f as getAllProjectSpecialistStatuses, i as clearSessionId, it as wakeSpecialistOrQueue, j as init_specialists, jt as generateReport$1, kt as deleteBudget, p as getAllSpecialistStatus, q as setSessionId, r as checkSpecialistQueue, w as getSessionId, wt as getSessionFiles, zt as summarizeCosts } from "../specialists-
|
|
20
|
+
import { At as formatCost, Bt as init_io, Ct as getProjectDirs, D as getSpecialistStatus, Dt as checkBudget, Et as parseClaudeSession, Ft as getWeeklySummary, H as recordWake, Ht as updateItemStatus, It as init_cost, Lt as readIssueCosts, Mt as getAllBudgets, Nt as getDailySummary, O as getTmuxSessionName, Ot as createBudget, Pt as getMonthlySummary, Rt as readTodayCosts, T as getSpecialistMetadata, Tt as init_jsonl_parser, Ut as updateSubItemStatus, Vt as readWorkspacePlan, Y as spawnEphemeralSpecialist, a as completeSpecialistTask, f as getAllProjectSpecialistStatuses, i as clearSessionId, it as wakeSpecialistOrQueue, j as init_specialists, jt as generateReport$1, kt as deleteBudget, p as getAllSpecialistStatus, q as setSessionId, r as checkSpecialistQueue, w as getSessionId, wt as getSessionFiles, zt as summarizeCosts } from "../specialists-DEKqgkxp.js";
|
|
21
21
|
import { i as init_tldr_daemon, n as getTldrDaemonService, r as getTldrMetrics } from "../tldr-daemon-BCEFPItr.js";
|
|
22
|
-
import { a as saveReviewStatuses, c as getDatabase, i as loadReviewStatuses, l as init_database, o as setReviewStatus, r as init_review_status, s as closeDatabase } from "../review-status-
|
|
22
|
+
import { a as saveReviewStatuses, c as getDatabase, i as loadReviewStatuses, l as init_database, o as setReviewStatus, r as init_review_status, s as closeDatabase } from "../review-status-Bm1bWNEa.js";
|
|
23
23
|
import { i as stepSkipped, n as stepFailed, r as stepOk } from "../types-DewGdaIP.js";
|
|
24
24
|
import { r as findWorkspacePath, t as archivePlanning } from "../archive-planning-BJrZ3tmN.js";
|
|
25
25
|
import "../clean-planning-DvhZAUv4.js";
|
|
@@ -6608,7 +6608,7 @@ async function verifyBranchMerged(ctx) {
|
|
|
6608
6608
|
const branchName = `feature/${ctx.issueId.toLowerCase()}`;
|
|
6609
6609
|
try {
|
|
6610
6610
|
try {
|
|
6611
|
-
const { loadReviewStatuses } = await import("../review-status-
|
|
6611
|
+
const { loadReviewStatuses } = await import("../review-status-2TdtHNcs.js");
|
|
6612
6612
|
if (loadReviewStatuses()[ctx.issueId.toUpperCase()]?.mergeStatus === "merged") return stepOk(step, ["Merge specialist confirmed merge completed"]);
|
|
6613
6613
|
} catch {}
|
|
6614
6614
|
const { stdout: branchExists } = await execAsync$15(`git branch --list "${branchName}" 2>/dev/null || true`, {
|
|
@@ -6659,7 +6659,7 @@ async function verifyBranchMerged(ctx) {
|
|
|
6659
6659
|
async function clearReviewStatusStep(issueId) {
|
|
6660
6660
|
const step = "clear-review-status";
|
|
6661
6661
|
try {
|
|
6662
|
-
const { clearReviewStatus } = await import("../review-status-
|
|
6662
|
+
const { clearReviewStatus } = await import("../review-status-2TdtHNcs.js");
|
|
6663
6663
|
clearReviewStatus(issueId.toUpperCase());
|
|
6664
6664
|
return stepOk(step, ["Review status cleared"]);
|
|
6665
6665
|
} catch {
|
|
@@ -10909,7 +10909,7 @@ async function checkOrphanedReviewStatuses() {
|
|
|
10909
10909
|
const { resolveProjectFromIssue } = await import("../projects-DMWmPeIU.js");
|
|
10910
10910
|
const resolved = resolveProjectFromIssue(issueId);
|
|
10911
10911
|
if (resolved) {
|
|
10912
|
-
const { spawnEphemeralSpecialist } = await import("../specialists-
|
|
10912
|
+
const { spawnEphemeralSpecialist } = await import("../specialists-aUoUVWsN.js");
|
|
10913
10913
|
const result = await spawnEphemeralSpecialist(resolved.projectKey, "review-agent", {
|
|
10914
10914
|
issueId,
|
|
10915
10915
|
workspace,
|
|
@@ -10922,7 +10922,7 @@ async function checkOrphanedReviewStatuses() {
|
|
|
10922
10922
|
actions.push(`Re-dispatched pending review for ${issueId} via ${resolved.projectKey}/review-agent (deacon-orphan-recovery)`);
|
|
10923
10923
|
console.log(`[deacon] Re-dispatched review for ${issueId} after orphan/pending detection (project: ${resolved.projectKey})`);
|
|
10924
10924
|
} else if (result.error === "specialist_busy") {
|
|
10925
|
-
const { submitToSpecialistQueue } = await import("../specialists-
|
|
10925
|
+
const { submitToSpecialistQueue } = await import("../specialists-aUoUVWsN.js");
|
|
10926
10926
|
submitToSpecialistQueue("review-agent", {
|
|
10927
10927
|
priority: "high",
|
|
10928
10928
|
source: "deacon-orphan-recovery",
|
|
@@ -10963,7 +10963,7 @@ async function checkOrphanedReviewStatuses() {
|
|
|
10963
10963
|
const { resolveProjectFromIssue } = await import("../projects-DMWmPeIU.js");
|
|
10964
10964
|
const resolved = resolveProjectFromIssue(issueId);
|
|
10965
10965
|
if (resolved) {
|
|
10966
|
-
const { spawnEphemeralSpecialist } = await import("../specialists-
|
|
10966
|
+
const { spawnEphemeralSpecialist } = await import("../specialists-aUoUVWsN.js");
|
|
10967
10967
|
const result = await spawnEphemeralSpecialist(resolved.projectKey, "test-agent", {
|
|
10968
10968
|
issueId,
|
|
10969
10969
|
workspace,
|
|
@@ -10975,7 +10975,7 @@ async function checkOrphanedReviewStatuses() {
|
|
|
10975
10975
|
actions.push(`Re-dispatched orphaned test for ${issueId} via ${resolved.projectKey}/test-agent (deacon-orphan-recovery)`);
|
|
10976
10976
|
console.log(`[deacon] Re-dispatched test for ${issueId} after orphan detection (project: ${resolved.projectKey})`);
|
|
10977
10977
|
} else if (result.error === "specialist_busy") {
|
|
10978
|
-
const { submitToSpecialistQueue } = await import("../specialists-
|
|
10978
|
+
const { submitToSpecialistQueue } = await import("../specialists-aUoUVWsN.js");
|
|
10979
10979
|
submitToSpecialistQueue("test-agent", {
|
|
10980
10980
|
priority: "high",
|
|
10981
10981
|
source: "deacon-orphan-recovery",
|
|
@@ -11344,7 +11344,7 @@ async function patrolWorkAgentResolutions() {
|
|
|
11344
11344
|
async function checkSpecialistQueues() {
|
|
11345
11345
|
const actions = [];
|
|
11346
11346
|
try {
|
|
11347
|
-
const { checkSpecialistQueue, spawnEphemeralSpecialist, getTmuxSessionName, isRunning } = await import("../specialists-
|
|
11347
|
+
const { checkSpecialistQueue, spawnEphemeralSpecialist, getTmuxSessionName, isRunning } = await import("../specialists-aUoUVWsN.js");
|
|
11348
11348
|
const { getAgentRuntimeState } = await import("../agents-BKsVoIc9.js");
|
|
11349
11349
|
const { resolveProjectFromIssue } = await import("../projects-DMWmPeIU.js");
|
|
11350
11350
|
for (const specialistType of [
|
|
@@ -11526,7 +11526,7 @@ async function runPatrol() {
|
|
|
11526
11526
|
statuses[issueId].mergeStatus = "merged";
|
|
11527
11527
|
statuses[issueId].readyForMerge = false;
|
|
11528
11528
|
writeFileSync(REVIEW_STATUS_FILE$1, JSON.stringify(statuses, null, 2), "utf-8");
|
|
11529
|
-
const { postMergeLifecycle } = await import("../merge-agent-
|
|
11529
|
+
const { postMergeLifecycle } = await import("../merge-agent-VQH9z9t8.js");
|
|
11530
11530
|
postMergeLifecycle(issueId, resolved.projectPath).catch((err) => console.warn(`[deacon] postMergeLifecycle failed for ${issueId}: ${err}`));
|
|
11531
11531
|
actions.push(`Auto-completed stale merge for ${issueId}`);
|
|
11532
11532
|
} else {
|
|
@@ -11784,7 +11784,7 @@ var CloisterService = class {
|
|
|
11784
11784
|
}
|
|
11785
11785
|
try {
|
|
11786
11786
|
if (existsSync(AGENTS_DIR)) {
|
|
11787
|
-
const { isRunning: isSpecialistRunning } = await import("../specialists-
|
|
11787
|
+
const { isRunning: isSpecialistRunning } = await import("../specialists-aUoUVWsN.js");
|
|
11788
11788
|
const specialistPattern = /^specialist-(.+)-(review-agent|test-agent|merge-agent)$/;
|
|
11789
11789
|
const entries = readdirSync(AGENTS_DIR, { withFileTypes: true });
|
|
11790
11790
|
for (const entry of entries) {
|
|
@@ -11816,7 +11816,7 @@ var CloisterService = class {
|
|
|
11816
11816
|
try {
|
|
11817
11817
|
const reviewStatuses = loadReviewStatuses();
|
|
11818
11818
|
const { resolveProjectFromIssue } = await import("../projects-DMWmPeIU.js");
|
|
11819
|
-
const { submitToSpecialistQueue, getTmuxSessionName, getAllProjectSpecialistStatuses } = await import("../specialists-
|
|
11819
|
+
const { submitToSpecialistQueue, getTmuxSessionName, getAllProjectSpecialistStatuses } = await import("../specialists-aUoUVWsN.js");
|
|
11820
11820
|
const activeReviewIssues = /* @__PURE__ */ new Set();
|
|
11821
11821
|
try {
|
|
11822
11822
|
const projSpecs = await getAllProjectSpecialistStatuses();
|
|
@@ -12040,7 +12040,7 @@ var CloisterService = class {
|
|
|
12040
12040
|
const retryCount = this.processedCompletions.get(dir.name) || 0;
|
|
12041
12041
|
if (retryCount >= 3) continue;
|
|
12042
12042
|
const issueId = dir.name.replace("agent-", "").toUpperCase();
|
|
12043
|
-
const { getReviewStatus } = await import("../review-status-
|
|
12043
|
+
const { getReviewStatus } = await import("../review-status-2TdtHNcs.js");
|
|
12044
12044
|
const existingReview = getReviewStatus(issueId);
|
|
12045
12045
|
if (existingReview && ["reviewing", "passed"].includes(existingReview.reviewStatus || "")) {
|
|
12046
12046
|
console.log(`🔔 Cloister: Completion marker for ${issueId} — review already ${existingReview.reviewStatus}, marking processed`);
|
|
@@ -13501,7 +13501,7 @@ const execAsync$6 = promisify(exec);
|
|
|
13501
13501
|
*/
|
|
13502
13502
|
async function listLogsCommand(project, type, options) {
|
|
13503
13503
|
try {
|
|
13504
|
-
const { listRunLogs } = await import("../specialist-logs-
|
|
13504
|
+
const { listRunLogs } = await import("../specialist-logs-CLztE_bE.js");
|
|
13505
13505
|
const runs = listRunLogs(project, type, { limit: options.limit ? parseInt(options.limit) : 10 });
|
|
13506
13506
|
if (options.json) {
|
|
13507
13507
|
console.log(JSON.stringify(runs, null, 2));
|
|
@@ -13540,7 +13540,7 @@ async function listLogsCommand(project, type, options) {
|
|
|
13540
13540
|
*/
|
|
13541
13541
|
async function viewLogCommand(project, type, runId, options) {
|
|
13542
13542
|
try {
|
|
13543
|
-
const { getRunLog, parseLogMetadata, getRunLogPath } = await import("../specialist-logs-
|
|
13543
|
+
const { getRunLog, parseLogMetadata, getRunLogPath } = await import("../specialist-logs-CLztE_bE.js");
|
|
13544
13544
|
const content = getRunLog(project, type, runId);
|
|
13545
13545
|
if (!content) {
|
|
13546
13546
|
console.error(`❌ Run log not found: ${runId}`);
|
|
@@ -13571,8 +13571,8 @@ async function viewLogCommand(project, type, runId, options) {
|
|
|
13571
13571
|
*/
|
|
13572
13572
|
async function tailLogCommand(project, type) {
|
|
13573
13573
|
try {
|
|
13574
|
-
const { getRunLogPath } = await import("../specialist-logs-
|
|
13575
|
-
const { getProjectSpecialistMetadata } = await import("../specialists-
|
|
13574
|
+
const { getRunLogPath } = await import("../specialist-logs-CLztE_bE.js");
|
|
13575
|
+
const { getProjectSpecialistMetadata } = await import("../specialists-aUoUVWsN.js");
|
|
13576
13576
|
const metadata = getProjectSpecialistMetadata(project, type);
|
|
13577
13577
|
if (!metadata.currentRun) {
|
|
13578
13578
|
console.error(`❌ No active run for ${project}/${type}`);
|
|
@@ -13639,7 +13639,7 @@ async function cleanupLogsCommand(projectOrAll, type, options) {
|
|
|
13639
13639
|
console.log(" Use --force to confirm.");
|
|
13640
13640
|
process.exit(1);
|
|
13641
13641
|
}
|
|
13642
|
-
const { cleanupAllLogs } = await import("../specialist-logs-
|
|
13642
|
+
const { cleanupAllLogs } = await import("../specialist-logs-CLztE_bE.js");
|
|
13643
13643
|
console.log("🧹 Cleaning up old logs for all projects...\n");
|
|
13644
13644
|
const results = cleanupAllLogs();
|
|
13645
13645
|
console.log(`\n✅ Cleanup complete: deleted ${results.totalDeleted} old logs\n`);
|
|
@@ -13660,7 +13660,7 @@ async function cleanupLogsCommand(projectOrAll, type, options) {
|
|
|
13660
13660
|
console.log(" Use --force to confirm.");
|
|
13661
13661
|
process.exit(1);
|
|
13662
13662
|
}
|
|
13663
|
-
const { cleanupOldLogs } = await import("../specialist-logs-
|
|
13663
|
+
const { cleanupOldLogs } = await import("../specialist-logs-CLztE_bE.js");
|
|
13664
13664
|
const { getSpecialistRetention } = await import("../projects-DMWmPeIU.js");
|
|
13665
13665
|
const retention = getSpecialistRetention(projectOrAll);
|
|
13666
13666
|
console.log(`🧹 Cleaning up old logs for ${projectOrAll}/${type}...`);
|