@proletariat/cli 0.3.85 → 0.3.86
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/bin/validate-better-sqlite3.cjs +11 -0
- package/dist/commands/session/cleanup.d.ts +2 -0
- package/dist/commands/session/cleanup.js +89 -42
- package/dist/commands/session/cleanup.js.map +1 -1
- package/dist/commands/session/index.js +4 -0
- package/dist/commands/session/index.js.map +1 -1
- package/dist/commands/session/report.d.ts +27 -0
- package/dist/commands/session/report.js +217 -0
- package/dist/commands/session/report.js.map +1 -0
- package/dist/commands/telemetry/disable.js +1 -1
- package/dist/commands/telemetry/disable.js.map +1 -1
- package/dist/commands/telemetry/enable.js +1 -1
- package/dist/commands/telemetry/enable.js.map +1 -1
- package/dist/commands/ticket/create.d.ts +3 -2
- package/dist/commands/ticket/create.js +6 -69
- package/dist/commands/ticket/create.js.map +1 -1
- package/dist/commands/work/groom.d.ts +15 -0
- package/dist/commands/work/groom.js +77 -0
- package/dist/commands/work/groom.js.map +1 -0
- package/dist/commands/work/implement.d.ts +16 -0
- package/dist/commands/work/implement.js +85 -0
- package/dist/commands/work/implement.js.map +1 -0
- package/dist/commands/work/index.js +38 -34
- package/dist/commands/work/index.js.map +1 -1
- package/dist/commands/work/peek.d.ts +18 -0
- package/dist/commands/work/peek.js +78 -0
- package/dist/commands/work/peek.js.map +1 -0
- package/dist/commands/work/poke.d.ts +19 -0
- package/dist/commands/work/poke.js +79 -0
- package/dist/commands/work/poke.js.map +1 -0
- package/dist/commands/work/review.d.ts +1 -31
- package/dist/commands/work/review.js +44 -368
- package/dist/commands/work/review.js.map +1 -1
- package/dist/commands/work/spawn.js +1 -1
- package/dist/commands/work/spawn.js.map +1 -1
- package/dist/commands/work/start.d.ts +2 -0
- package/dist/commands/work/start.js +24 -19
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/stop.d.ts +14 -0
- package/dist/commands/work/stop.js +103 -0
- package/dist/commands/work/stop.js.map +1 -0
- package/dist/hooks/init.d.ts +1 -1
- package/dist/hooks/init.js +1 -1
- package/dist/lib/execution/config.d.ts +17 -1
- package/dist/lib/execution/config.js +38 -0
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/devcontainer.js +0 -1
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.js +20 -0
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/prompt-builder.js +1 -2
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/runners/shared.js +3 -1
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/spawner.d.ts +3 -1
- package/dist/lib/execution/spawner.js +10 -4
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/storage.d.ts +2 -1
- package/dist/lib/execution/storage.js +4 -3
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/execution/types.d.ts +9 -0
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/mcp/tools/tmux.d.ts +1 -1
- package/dist/lib/mcp/tools/tmux.js +1 -1
- package/dist/lib/mcp/tools/work.js +4 -35
- package/dist/lib/mcp/tools/work.js.map +1 -1
- package/dist/lib/pmo/schema.d.ts +1 -1
- package/dist/lib/pmo/schema.js +1 -0
- package/dist/lib/pmo/schema.js.map +1 -1
- package/dist/lib/pmo/storage/base.js +59 -501
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/pmo/utils.d.ts +22 -0
- package/dist/lib/pmo/utils.js +31 -0
- package/dist/lib/pmo/utils.js.map +1 -1
- package/dist/lib/telemetry/analytics.d.ts +10 -13
- package/dist/lib/telemetry/analytics.js +35 -125
- package/dist/lib/telemetry/analytics.js.map +1 -1
- package/dist/lib/telemetry/feature-flags.d.ts +12 -37
- package/dist/lib/telemetry/feature-flags.js +15 -63
- package/dist/lib/telemetry/feature-flags.js.map +1 -1
- package/oclif.manifest.json +1751 -1488
- package/package.json +2 -3
- package/dist/commands/work/revise.d.ts +0 -20
- package/dist/commands/work/revise.js +0 -377
- package/dist/commands/work/revise.js.map +0 -1
|
@@ -90,6 +90,17 @@ try {
|
|
|
90
90
|
} catch (error) {
|
|
91
91
|
const info = runtimeInfo()
|
|
92
92
|
const message = error instanceof Error ? error.message : String(error)
|
|
93
|
+
|
|
94
|
+
// In CI, the workflow has explicit "Verify better-sqlite3 native binding" steps
|
|
95
|
+
// that run after cache restore / rebuild-with-retry. Don't fail pnpm install here
|
|
96
|
+
// — the flaky native build is handled by the workflow's fallback rebuild step.
|
|
97
|
+
if (process.env.CI) {
|
|
98
|
+
console.warn(message)
|
|
99
|
+
console.warn('\n[warn] better-sqlite3 validation failed during postinstall (CI mode).')
|
|
100
|
+
console.warn('[warn] The workflow will restore the cached binding or rebuild with retry.\n')
|
|
101
|
+
process.exit(0)
|
|
102
|
+
}
|
|
103
|
+
|
|
93
104
|
// Under bun, native module build failures are expected — warn instead of
|
|
94
105
|
// hard-failing so the install can complete. The user will get a clear error
|
|
95
106
|
// at runtime with actionable fix steps.
|
|
@@ -5,6 +5,7 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
5
5
|
static flags: {
|
|
6
6
|
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
7
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
9
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
10
|
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -13,4 +14,5 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
13
14
|
promptIfMultiple: boolean;
|
|
14
15
|
};
|
|
15
16
|
execute(): Promise<void>;
|
|
17
|
+
private outputResult;
|
|
16
18
|
}
|
|
@@ -6,13 +6,14 @@ import { getWorkspaceInfo } from '../../lib/agents/commands.js';
|
|
|
6
6
|
import { ExecutionStorage } from '../../lib/execution/index.js';
|
|
7
7
|
import { listAgentContainers, cleanupCompletedContainers, } from '../../lib/execution/container-cleanup.js';
|
|
8
8
|
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
9
|
-
import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
9
|
+
import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, outputConfirmationNeededAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
10
10
|
export default class SessionCleanup extends PMOCommand {
|
|
11
11
|
static description = 'Stop and remove Docker containers for completed agents';
|
|
12
12
|
static examples = [
|
|
13
13
|
'<%= config.bin %> session cleanup',
|
|
14
14
|
'<%= config.bin %> session cleanup --dry-run',
|
|
15
15
|
'<%= config.bin %> session cleanup --force',
|
|
16
|
+
'<%= config.bin %> session cleanup --force --yes',
|
|
16
17
|
];
|
|
17
18
|
static flags = {
|
|
18
19
|
...pmoBaseFlags,
|
|
@@ -26,6 +27,11 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
26
27
|
description: 'Remove all agent containers, including those with active executions',
|
|
27
28
|
default: false,
|
|
28
29
|
}),
|
|
30
|
+
yes: Flags.boolean({
|
|
31
|
+
char: 'y',
|
|
32
|
+
description: 'Skip confirmation prompt when using --force',
|
|
33
|
+
default: false,
|
|
34
|
+
}),
|
|
29
35
|
};
|
|
30
36
|
getPMOOptions() {
|
|
31
37
|
return { promptIfMultiple: false };
|
|
@@ -35,6 +41,7 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
35
41
|
const jsonMode = shouldOutputJson(flags);
|
|
36
42
|
const dryRun = flags['dry-run'];
|
|
37
43
|
const force = flags.force;
|
|
44
|
+
const skipConfirm = flags.yes;
|
|
38
45
|
// Get workspace info
|
|
39
46
|
let workspaceInfo;
|
|
40
47
|
try {
|
|
@@ -53,14 +60,12 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
53
60
|
const db = new Database(dbPath);
|
|
54
61
|
const executionStorage = new ExecutionStorage(db);
|
|
55
62
|
try {
|
|
56
|
-
//
|
|
63
|
+
// Always find active executions to determine which containers are still needed
|
|
57
64
|
const activeAgentNames = new Set();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
activeAgentNames.add(exec.agentName);
|
|
63
|
-
}
|
|
65
|
+
const runningExecutions = executionStorage.listExecutions({ status: 'running' });
|
|
66
|
+
const startingExecutions = executionStorage.listExecutions({ status: 'starting' });
|
|
67
|
+
for (const exec of [...runningExecutions, ...startingExecutions]) {
|
|
68
|
+
activeAgentNames.add(exec.agentName);
|
|
64
69
|
}
|
|
65
70
|
// List all containers first for reporting
|
|
66
71
|
const allContainers = listAgentContainers();
|
|
@@ -80,7 +85,47 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
80
85
|
this.log('');
|
|
81
86
|
return;
|
|
82
87
|
}
|
|
83
|
-
//
|
|
88
|
+
// When --force is used, confirm before killing active agents
|
|
89
|
+
if (force && activeAgentNames.size > 0 && !dryRun) {
|
|
90
|
+
// Find which active agents actually have containers
|
|
91
|
+
const activeAgentsWithContainers = allContainers
|
|
92
|
+
.filter(c => activeAgentNames.has(c.agentName))
|
|
93
|
+
.map(c => c.agentName);
|
|
94
|
+
if (activeAgentsWithContainers.length > 0 && !skipConfirm) {
|
|
95
|
+
const agentList = activeAgentsWithContainers.join(', ');
|
|
96
|
+
const count = activeAgentsWithContainers.length;
|
|
97
|
+
const confirmMessage = `This will kill ${count} active agent${count === 1 ? '' : 's'}: ${agentList}. Continue?`;
|
|
98
|
+
if (jsonMode) {
|
|
99
|
+
outputConfirmationNeededAsJson({
|
|
100
|
+
activeAgents: activeAgentsWithContainers,
|
|
101
|
+
totalContainers: allContainers.length,
|
|
102
|
+
}, `prlt session cleanup --force --yes`, confirmMessage, createMetadata('session cleanup', flags));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Interactive confirmation using list selection (per CLAUDE.md UX rule)
|
|
106
|
+
const { confirm } = await this.prompt([
|
|
107
|
+
{
|
|
108
|
+
type: 'list',
|
|
109
|
+
name: 'confirm',
|
|
110
|
+
message: confirmMessage,
|
|
111
|
+
choices: [
|
|
112
|
+
{ name: 'No, cancel', value: false },
|
|
113
|
+
{ name: 'Yes, kill active agents and clean up', value: true },
|
|
114
|
+
],
|
|
115
|
+
default: 0,
|
|
116
|
+
},
|
|
117
|
+
], null);
|
|
118
|
+
if (!confirm) {
|
|
119
|
+
this.log(styles.muted('Operation cancelled.'));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Force mode: pass empty set so all containers are cleaned
|
|
124
|
+
const result = cleanupCompletedContainers(new Set(), { dryRun });
|
|
125
|
+
this.outputResult(result, dryRun, jsonMode, flags);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// Normal mode (no --force): skip active agents automatically
|
|
84
129
|
const result = cleanupCompletedContainers(activeAgentNames, { dryRun });
|
|
85
130
|
if (result.removed.length === 0 && result.errors.length === 0) {
|
|
86
131
|
if (jsonMode) {
|
|
@@ -101,43 +146,45 @@ export default class SessionCleanup extends PMOCommand {
|
|
|
101
146
|
this.log('');
|
|
102
147
|
return;
|
|
103
148
|
}
|
|
104
|
-
|
|
105
|
-
if (jsonMode) {
|
|
106
|
-
outputSuccessAsJson({
|
|
107
|
-
message: `${dryRun ? 'Would remove' : 'Removed'} ${result.removed.length} container(s)`,
|
|
108
|
-
dryRun,
|
|
109
|
-
...result,
|
|
110
|
-
}, createMetadata('session cleanup', flags));
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
this.log('');
|
|
114
|
-
this.log(styles.header(`${dryRun ? '[DRY RUN] ' : ''}Container Cleanup`));
|
|
115
|
-
this.log('═'.repeat(50));
|
|
116
|
-
if (result.stopped.length > 0) {
|
|
117
|
-
this.log(styles.info(` ${result.stopped.length} container(s) ${dryRun ? 'would be ' : ''}stopped:`));
|
|
118
|
-
for (const name of result.stopped) {
|
|
119
|
-
this.log(styles.muted(` - ${name}`));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (result.removed.length > 0) {
|
|
123
|
-
this.log(styles.success(` ${result.removed.length} container(s) ${dryRun ? 'would be ' : ''}removed:`));
|
|
124
|
-
for (const name of result.removed) {
|
|
125
|
-
this.log(styles.muted(` - ${name}`));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (result.skipped.length > 0) {
|
|
129
|
-
this.log(styles.muted(` ${result.skipped.length} container(s) skipped (active agents)`));
|
|
130
|
-
}
|
|
131
|
-
if (result.errors.length > 0) {
|
|
132
|
-
for (const err of result.errors) {
|
|
133
|
-
this.log(styles.error(` ${err}`));
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
this.log('');
|
|
149
|
+
this.outputResult(result, dryRun, jsonMode, flags);
|
|
137
150
|
}
|
|
138
151
|
finally {
|
|
139
152
|
db.close();
|
|
140
153
|
}
|
|
141
154
|
}
|
|
155
|
+
outputResult(result, dryRun, jsonMode, flags) {
|
|
156
|
+
if (jsonMode) {
|
|
157
|
+
outputSuccessAsJson({
|
|
158
|
+
message: `${dryRun ? 'Would remove' : 'Removed'} ${result.removed.length} container(s)`,
|
|
159
|
+
dryRun,
|
|
160
|
+
...result,
|
|
161
|
+
}, createMetadata('session cleanup', flags));
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.log('');
|
|
165
|
+
this.log(styles.header(`${dryRun ? '[DRY RUN] ' : ''}Container Cleanup`));
|
|
166
|
+
this.log('═'.repeat(50));
|
|
167
|
+
if (result.stopped.length > 0) {
|
|
168
|
+
this.log(styles.info(` ${result.stopped.length} container(s) ${dryRun ? 'would be ' : ''}stopped:`));
|
|
169
|
+
for (const name of result.stopped) {
|
|
170
|
+
this.log(styles.muted(` - ${name}`));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (result.removed.length > 0) {
|
|
174
|
+
this.log(styles.success(` ${result.removed.length} container(s) ${dryRun ? 'would be ' : ''}removed:`));
|
|
175
|
+
for (const name of result.removed) {
|
|
176
|
+
this.log(styles.muted(` - ${name}`));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (result.skipped.length > 0) {
|
|
180
|
+
this.log(styles.muted(` ${result.skipped.length} container(s) skipped (active agents)`));
|
|
181
|
+
}
|
|
182
|
+
if (result.errors.length > 0) {
|
|
183
|
+
for (const err of result.errors) {
|
|
184
|
+
this.log(styles.error(` ${err}`));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
this.log('');
|
|
188
|
+
}
|
|
142
189
|
}
|
|
143
190
|
//# sourceMappingURL=cleanup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/session/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EACL,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAA;AAEjC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IACpD,MAAM,CAAC,WAAW,GAAG,wDAAwD,CAAA;IAE7E,MAAM,CAAC,QAAQ,GAAG;QAChB,mCAAmC;QACnC,6CAA6C;QAC7C,2CAA2C;
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/session/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ export default class Session extends PMOCommand {
|
|
|
33
33
|
{ name: 'Restart an agent session', value: 'restart', command: 'prlt session restart --json' },
|
|
34
34
|
{ name: 'Prune stale sessions', value: 'prune', command: 'prlt session prune --json' },
|
|
35
35
|
{ name: 'Clean up completed containers', value: 'cleanup', command: 'prlt session cleanup --json' },
|
|
36
|
+
{ name: 'Report agent session event', value: 'report', command: 'prlt session report --json' },
|
|
36
37
|
{ name: 'Cancel', value: 'cancel' },
|
|
37
38
|
],
|
|
38
39
|
}], jsonModeConfig);
|
|
@@ -74,6 +75,9 @@ export default class Session extends PMOCommand {
|
|
|
74
75
|
case 'cleanup':
|
|
75
76
|
await this.config.runCommand('session:cleanup', []);
|
|
76
77
|
break;
|
|
78
|
+
case 'report':
|
|
79
|
+
await this.config.runCommand('session:report', []);
|
|
80
|
+
break;
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/session/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,UAAU;IAC7C,MAAM,CAAC,WAAW,GAAG,2DAA2D,CAAA;IAEhF,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;QACrC,0CAA0C;QAC1C,8DAA8D;QAC9D,uDAAuD;KACxD,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;KAChB,CAAA;IAES,aAAa;QACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAEzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAqB,CAAC;gBACxD,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,iDAAiD;gBAC1D,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBACpF,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE;oBAC1F,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;oBACxF,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;oBACvF,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBACpF,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;oBACtF,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBACpF,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBAChG,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE;oBAC9F,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE;oBACtF,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE;oBACnG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACpC;aACF,CAAC,EAAE,cAAc,CAAC,CAAA;QAEnB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAM;QACR,CAAC;QAED,8BAA8B;QAC9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,SAAS;gBACZ,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;gBACnD,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;gBAClD,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;gBAClD,MAAK;YACP,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;gBAClD,MAAK;YACP,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;gBAChD,MAAK;YACP,KAAK,SAAS;gBACZ,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;gBACnD,MAAK;YACP,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,SAAS;gBACZ,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;gBACnD,MAAK;QACT,CAAC;IACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/session/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Report Command (PRLT-1061)
|
|
3
|
+
*
|
|
4
|
+
* Called by Claude Code stop hook when an agent session ends.
|
|
5
|
+
* Reads the execution record and cleanup policy to determine
|
|
6
|
+
* whether to remove the container, update ticket status, and
|
|
7
|
+
* log telemetry events.
|
|
8
|
+
*
|
|
9
|
+
* Usage (from stop hook):
|
|
10
|
+
* prlt session report --agent bold-turing --status exited
|
|
11
|
+
*/
|
|
12
|
+
import { PMOCommand } from '../../lib/pmo/index.js';
|
|
13
|
+
export default class SessionReport extends PMOCommand {
|
|
14
|
+
static description: string;
|
|
15
|
+
static examples: string[];
|
|
16
|
+
static flags: {
|
|
17
|
+
agent: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
status: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
};
|
|
23
|
+
protected getPMOOptions(): {
|
|
24
|
+
promptIfMultiple: boolean;
|
|
25
|
+
};
|
|
26
|
+
execute(): Promise<void>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Report Command (PRLT-1061)
|
|
3
|
+
*
|
|
4
|
+
* Called by Claude Code stop hook when an agent session ends.
|
|
5
|
+
* Reads the execution record and cleanup policy to determine
|
|
6
|
+
* whether to remove the container, update ticket status, and
|
|
7
|
+
* log telemetry events.
|
|
8
|
+
*
|
|
9
|
+
* Usage (from stop hook):
|
|
10
|
+
* prlt session report --agent bold-turing --status exited
|
|
11
|
+
*/
|
|
12
|
+
import { Flags } from '@oclif/core';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
import { execSync } from 'node:child_process';
|
|
15
|
+
import Database from 'better-sqlite3';
|
|
16
|
+
import { getWorkspaceInfo } from '../../lib/agents/commands.js';
|
|
17
|
+
import { ExecutionStorage } from '../../lib/execution/index.js';
|
|
18
|
+
import { cleanupAgentContainer } from '../../lib/execution/container-cleanup.js';
|
|
19
|
+
import { trackEvent } from '../../lib/telemetry/analytics.js';
|
|
20
|
+
import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
|
|
21
|
+
import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
|
|
22
|
+
const VALID_STATUSES = new Set(['started', 'completed', 'errored', 'exited']);
|
|
23
|
+
export default class SessionReport extends PMOCommand {
|
|
24
|
+
static description = 'Report agent session lifecycle events and trigger cleanup';
|
|
25
|
+
static examples = [
|
|
26
|
+
'<%= config.bin %> session report --agent bold-turing --status exited',
|
|
27
|
+
'<%= config.bin %> session report --agent bold-turing --status completed',
|
|
28
|
+
'<%= config.bin %> session report --agent bold-turing --status errored',
|
|
29
|
+
];
|
|
30
|
+
static flags = {
|
|
31
|
+
...pmoBaseFlags,
|
|
32
|
+
agent: Flags.string({
|
|
33
|
+
description: 'Agent name',
|
|
34
|
+
required: true,
|
|
35
|
+
}),
|
|
36
|
+
status: Flags.string({
|
|
37
|
+
description: 'Session status (started, completed, errored, exited)',
|
|
38
|
+
required: true,
|
|
39
|
+
options: ['started', 'completed', 'errored', 'exited'],
|
|
40
|
+
}),
|
|
41
|
+
};
|
|
42
|
+
getPMOOptions() {
|
|
43
|
+
return { promptIfMultiple: false };
|
|
44
|
+
}
|
|
45
|
+
async execute() {
|
|
46
|
+
const { flags } = await this.parse(SessionReport);
|
|
47
|
+
const jsonMode = shouldOutputJson(flags);
|
|
48
|
+
const agentName = flags.agent;
|
|
49
|
+
const status = flags.status;
|
|
50
|
+
if (!VALID_STATUSES.has(status)) {
|
|
51
|
+
if (jsonMode) {
|
|
52
|
+
outputErrorAsJson('INVALID_STATUS', `Invalid status: ${status}. Must be one of: started, completed, errored, exited`, createMetadata('session report', flags));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.error(`Invalid status: ${status}. Must be one of: started, completed, errored, exited`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Get workspace info
|
|
59
|
+
let workspaceInfo;
|
|
60
|
+
try {
|
|
61
|
+
workspaceInfo = getWorkspaceInfo();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
if (jsonMode) {
|
|
65
|
+
outputErrorAsJson('NOT_IN_WORKSPACE', 'Not in a workspace.', createMetadata('session report', flags));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.error('Not in a workspace.');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Open database
|
|
72
|
+
const dbPath = path.join(workspaceInfo.path, '.proletariat', 'workspace.db');
|
|
73
|
+
const db = new Database(dbPath);
|
|
74
|
+
const executionStorage = new ExecutionStorage(db);
|
|
75
|
+
let needsSelfTerminate = false;
|
|
76
|
+
try {
|
|
77
|
+
// Find the most recent execution for this agent
|
|
78
|
+
const executions = executionStorage.getAgentRunningExecutions(agentName);
|
|
79
|
+
if (executions.length === 0) {
|
|
80
|
+
// No running executions — might be already cleaned up or stale
|
|
81
|
+
// Track the event anyway for observability
|
|
82
|
+
trackEvent('agent_session_report', null, {
|
|
83
|
+
agent_name: agentName,
|
|
84
|
+
report_status: status,
|
|
85
|
+
action: 'no_execution_found',
|
|
86
|
+
});
|
|
87
|
+
if (jsonMode) {
|
|
88
|
+
outputSuccessAsJson({
|
|
89
|
+
message: `No running executions found for agent ${agentName}`,
|
|
90
|
+
action: 'none',
|
|
91
|
+
}, createMetadata('session report', flags));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.log(`No running executions found for agent ${agentName}`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// Use the most recent execution
|
|
98
|
+
const execution = executions[0];
|
|
99
|
+
const cleanupPolicy = execution.cleanupPolicy || 'on-exit';
|
|
100
|
+
// Map report status to execution status
|
|
101
|
+
let executionStatus;
|
|
102
|
+
switch (status) {
|
|
103
|
+
case 'completed':
|
|
104
|
+
executionStatus = 'completed';
|
|
105
|
+
break;
|
|
106
|
+
case 'errored':
|
|
107
|
+
executionStatus = 'failed';
|
|
108
|
+
break;
|
|
109
|
+
case 'exited':
|
|
110
|
+
case 'started':
|
|
111
|
+
default:
|
|
112
|
+
executionStatus = 'stopped';
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
// Update execution status
|
|
116
|
+
executionStorage.updateStatus(execution.id, executionStatus);
|
|
117
|
+
// Determine cleanup action based on policy
|
|
118
|
+
let shouldCleanup = false;
|
|
119
|
+
let cleanupReason = '';
|
|
120
|
+
switch (cleanupPolicy) {
|
|
121
|
+
case 'on-exit':
|
|
122
|
+
shouldCleanup = true;
|
|
123
|
+
cleanupReason = 'cleanup policy is on-exit';
|
|
124
|
+
break;
|
|
125
|
+
case 'persistent':
|
|
126
|
+
shouldCleanup = false;
|
|
127
|
+
cleanupReason = 'cleanup policy is persistent';
|
|
128
|
+
break;
|
|
129
|
+
case 'on-error-keep':
|
|
130
|
+
if (executionStatus === 'failed') {
|
|
131
|
+
shouldCleanup = false;
|
|
132
|
+
cleanupReason = 'cleanup policy is on-error-keep and execution failed';
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
shouldCleanup = true;
|
|
136
|
+
cleanupReason = 'cleanup policy is on-error-keep and execution succeeded';
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
// Perform container cleanup if needed
|
|
141
|
+
// First try docker rm -f (works when Docker socket is available, e.g., orchestrator containers).
|
|
142
|
+
// If that fails (regular agent containers don't have Docker socket), signal the
|
|
143
|
+
// container to stop by killing PID 1 (the sleep infinity process) after the report
|
|
144
|
+
// completes. The stopped container will be removed by the next host-side cleanup.
|
|
145
|
+
let cleanupResult = { success: true };
|
|
146
|
+
if (shouldCleanup) {
|
|
147
|
+
cleanupResult = cleanupAgentContainer(agentName);
|
|
148
|
+
if (!cleanupResult.success && process.env.DEVCONTAINER === 'true') {
|
|
149
|
+
// Running inside a container without Docker socket — schedule self-termination
|
|
150
|
+
needsSelfTerminate = true;
|
|
151
|
+
// Treat as success since the container will stop after this command finishes
|
|
152
|
+
cleanupResult = { success: true };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Track telemetry event for agent lifecycle
|
|
156
|
+
trackEvent('agent_session_report', null, {
|
|
157
|
+
agent_name: agentName,
|
|
158
|
+
report_status: status,
|
|
159
|
+
execution_id: execution.id,
|
|
160
|
+
ticket_id: execution.ticketId,
|
|
161
|
+
cleanup_policy: cleanupPolicy,
|
|
162
|
+
cleanup_performed: String(shouldCleanup),
|
|
163
|
+
cleanup_success: String(cleanupResult.success),
|
|
164
|
+
execution_status: executionStatus,
|
|
165
|
+
environment: execution.environment,
|
|
166
|
+
executor: execution.executor,
|
|
167
|
+
});
|
|
168
|
+
// Build result
|
|
169
|
+
const result = {
|
|
170
|
+
executionId: execution.id,
|
|
171
|
+
ticketId: execution.ticketId,
|
|
172
|
+
agentName,
|
|
173
|
+
reportedStatus: status,
|
|
174
|
+
executionStatus,
|
|
175
|
+
cleanupPolicy,
|
|
176
|
+
cleanupPerformed: shouldCleanup,
|
|
177
|
+
cleanupReason,
|
|
178
|
+
cleanupSuccess: cleanupResult.success,
|
|
179
|
+
cleanupError: cleanupResult.error,
|
|
180
|
+
};
|
|
181
|
+
if (jsonMode) {
|
|
182
|
+
outputSuccessAsJson(result, createMetadata('session report', flags));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
this.log(`Session report for ${agentName}:`);
|
|
186
|
+
this.log(` Execution: ${execution.id} (${execution.ticketId})`);
|
|
187
|
+
this.log(` Status: ${status} → ${executionStatus}`);
|
|
188
|
+
this.log(` Cleanup policy: ${cleanupPolicy}`);
|
|
189
|
+
if (shouldCleanup) {
|
|
190
|
+
if (cleanupResult.success) {
|
|
191
|
+
this.log(` Container: removed (${cleanupReason})`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
this.log(` Container: cleanup failed - ${cleanupResult.error}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
this.log(` Container: kept (${cleanupReason})`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
db.close();
|
|
203
|
+
// Self-terminate the container if cleanup was requested but Docker wasn't available.
|
|
204
|
+
// This kills the PID 1 process (sleep infinity) which stops the container.
|
|
205
|
+
// Done after db.close() to ensure clean shutdown.
|
|
206
|
+
if (needsSelfTerminate) {
|
|
207
|
+
try {
|
|
208
|
+
execSync('kill 1', { stdio: 'pipe' });
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Best-effort — container may not allow killing PID 1
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/commands/session/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export default class TelemetryDisable extends Command {
|
|
|
15
15
|
async run() {
|
|
16
16
|
const { flags } = await this.parse(TelemetryDisable);
|
|
17
17
|
const jsonMode = shouldOutputJson(flags);
|
|
18
|
-
// Disable
|
|
18
|
+
// Disable PostHog analytics and Sentry crash reporting
|
|
19
19
|
disableTelemetry();
|
|
20
20
|
writeTelemetryConfig({ enabled: false });
|
|
21
21
|
if (jsonMode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/commands/telemetry/disable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,MAAM,CAAC,WAAW,GAAG,6BAA6B,CAAA;IAElD,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;KACtC,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;KACtB,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAExC,
|
|
1
|
+
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/commands/telemetry/disable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,MAAM,CAAC,WAAW,GAAG,6BAA6B,CAAA;IAElD,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;KACtC,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;KACtB,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAExC,uDAAuD;QACvD,gBAAgB,EAAE,CAAA;QAClB,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAExC,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAA;YACnF,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,CAAA;IAC5E,CAAC"}
|
|
@@ -15,7 +15,7 @@ export default class TelemetryEnable extends Command {
|
|
|
15
15
|
async run() {
|
|
16
16
|
const { flags } = await this.parse(TelemetryEnable);
|
|
17
17
|
const jsonMode = shouldOutputJson(flags);
|
|
18
|
-
// Enable
|
|
18
|
+
// Enable PostHog analytics and Sentry crash reporting
|
|
19
19
|
enableTelemetry();
|
|
20
20
|
writeTelemetryConfig({ enabled: true });
|
|
21
21
|
if (jsonMode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../src/commands/telemetry/enable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,MAAM,CAAC,WAAW,GAAG,4BAA4B,CAAA;IAEjD,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;KACtC,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;KACtB,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAExC,
|
|
1
|
+
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../src/commands/telemetry/enable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,MAAM,CAAC,WAAW,GAAG,4BAA4B,CAAA;IAEjD,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;KACtC,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;KACtB,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAExC,sDAAsD;QACtD,eAAe,EAAE,CAAA;QACjB,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAA;YACjF,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,CAAA;IACpF,CAAC"}
|
|
@@ -35,8 +35,9 @@ export default class TicketCreate extends PMOCommand {
|
|
|
35
35
|
private resolveSource;
|
|
36
36
|
/**
|
|
37
37
|
* Create an issue in Linear instead of the local PMO database.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
38
|
+
* When a cloud provider is connected, the cloud provider is the
|
|
39
|
+
* source of truth — no local PMO mirror ticket is created.
|
|
40
|
+
* Local mirrors are created on demand by `work start --mirror-to-pmo`.
|
|
40
41
|
*/
|
|
41
42
|
private createLinearIssue;
|
|
42
43
|
private promptTicketData;
|