@telora/daemon 0.17.33 → 0.17.40
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/build-info.json +5 -3
- package/dist/assembly-engine.d.ts +6 -0
- package/dist/assembly-engine.d.ts.map +1 -1
- package/dist/assembly-engine.js +19 -0
- package/dist/assembly-engine.js.map +1 -1
- package/dist/assembly-resolvers.d.ts +17 -8
- package/dist/assembly-resolvers.d.ts.map +1 -1
- package/dist/assembly-resolvers.js +19 -8
- package/dist/assembly-resolvers.js.map +1 -1
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +4 -0
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/session-state.d.ts +10 -0
- package/dist/cli/session-state.d.ts.map +1 -1
- package/dist/cli/session-state.js +31 -0
- package/dist/cli/session-state.js.map +1 -1
- package/dist/completion/completion-decision.d.ts +83 -0
- package/dist/completion/completion-decision.d.ts.map +1 -0
- package/dist/completion/completion-decision.js +48 -0
- package/dist/completion/completion-decision.js.map +1 -0
- package/dist/completion/event-escalations.d.ts +97 -0
- package/dist/completion/event-escalations.d.ts.map +1 -0
- package/dist/completion/event-escalations.js +213 -0
- package/dist/completion/event-escalations.js.map +1 -0
- package/dist/completion/event.d.ts +1 -72
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +149 -329
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/exit-classification.d.ts +82 -0
- package/dist/completion/exit-classification.d.ts.map +1 -0
- package/dist/completion/exit-classification.js +61 -0
- package/dist/completion/exit-classification.js.map +1 -0
- package/dist/completion/index.d.ts +14 -5
- package/dist/completion/index.d.ts.map +1 -1
- package/dist/completion/index.js +14 -5
- package/dist/completion/index.js.map +1 -1
- package/dist/completion/merge-phase.d.ts +114 -0
- package/dist/completion/merge-phase.d.ts.map +1 -0
- package/dist/completion/merge-phase.js +198 -0
- package/dist/completion/merge-phase.js.map +1 -0
- package/dist/completion/review-exit-phase.d.ts +82 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -0
- package/dist/completion/review-exit-phase.js +228 -0
- package/dist/completion/review-exit-phase.js.map +1 -0
- package/dist/completion/status-advance-phase.d.ts +61 -0
- package/dist/completion/status-advance-phase.d.ts.map +1 -0
- package/dist/completion/status-advance-phase.js +182 -0
- package/dist/completion/status-advance-phase.js.map +1 -0
- package/dist/completion/team-completion.d.ts +28 -269
- package/dist/completion/team-completion.d.ts.map +1 -1
- package/dist/completion/team-completion.js +145 -676
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +70 -41
- package/dist/config.js.map +1 -1
- package/dist/daemon-process.d.ts +18 -2
- package/dist/daemon-process.d.ts.map +1 -1
- package/dist/daemon-process.js +15 -2
- package/dist/daemon-process.js.map +1 -1
- package/dist/directive/close-loop-stage.d.ts +50 -0
- package/dist/directive/close-loop-stage.d.ts.map +1 -0
- package/dist/directive/close-loop-stage.js +196 -0
- package/dist/directive/close-loop-stage.js.map +1 -0
- package/dist/directive/directive-assembly.d.ts +33 -0
- package/dist/directive/directive-assembly.d.ts.map +1 -0
- package/dist/directive/directive-assembly.js +77 -0
- package/dist/directive/directive-assembly.js.map +1 -0
- package/dist/directive/directive-dispatch.d.ts +103 -0
- package/dist/directive/directive-dispatch.d.ts.map +1 -0
- package/dist/directive/directive-dispatch.js +279 -0
- package/dist/directive/directive-dispatch.js.map +1 -0
- package/dist/directive/phase-sync.d.ts +89 -0
- package/dist/directive/phase-sync.d.ts.map +1 -0
- package/dist/directive/phase-sync.js +173 -0
- package/dist/directive/phase-sync.js.map +1 -0
- package/dist/directive-executor.d.ts +21 -223
- package/dist/directive-executor.d.ts.map +1 -1
- package/dist/directive-executor.js +28 -687
- package/dist/directive-executor.js.map +1 -1
- package/dist/focus-engine.d.ts.map +1 -1
- package/dist/focus-engine.js +16 -10
- package/dist/focus-engine.js.map +1 -1
- package/dist/focus-executor.d.ts +29 -8
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +29 -10
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-stage-lifecycle.d.ts +7 -5
- package/dist/focus-stage-lifecycle.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle.js +11 -6
- package/dist/focus-stage-lifecycle.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/merge-back-loop.d.ts.map +1 -1
- package/dist/merge-back-loop.js +4 -10
- package/dist/merge-back-loop.js.map +1 -1
- package/dist/pipeline-config.d.ts +13 -0
- package/dist/pipeline-config.d.ts.map +1 -1
- package/dist/pipeline-config.js +15 -0
- package/dist/pipeline-config.js.map +1 -1
- package/dist/resolvers/agent-escalations.d.ts +8 -1
- package/dist/resolvers/agent-escalations.d.ts.map +1 -1
- package/dist/resolvers/agent-escalations.js +25 -22
- package/dist/resolvers/agent-escalations.js.map +1 -1
- package/dist/resolvers/agent-session-summaries.d.ts +8 -1
- package/dist/resolvers/agent-session-summaries.d.ts.map +1 -1
- package/dist/resolvers/agent-session-summaries.js +21 -18
- package/dist/resolvers/agent-session-summaries.js.map +1 -1
- package/dist/resolvers/delivery-acceptance-criteria.d.ts +7 -1
- package/dist/resolvers/delivery-acceptance-criteria.d.ts.map +1 -1
- package/dist/resolvers/delivery-acceptance-criteria.js +14 -11
- package/dist/resolvers/delivery-acceptance-criteria.js.map +1 -1
- package/dist/resolvers/delivery-description.d.ts +7 -1
- package/dist/resolvers/delivery-description.d.ts.map +1 -1
- package/dist/resolvers/delivery-description.js +14 -11
- package/dist/resolvers/delivery-description.js.map +1 -1
- package/dist/resolvers/delivery-issues.d.ts +8 -1
- package/dist/resolvers/delivery-issues.d.ts.map +1 -1
- package/dist/resolvers/delivery-issues.js +51 -48
- package/dist/resolvers/delivery-issues.js.map +1 -1
- package/dist/resolvers/delivery-listing.d.ts +16 -1
- package/dist/resolvers/delivery-listing.d.ts.map +1 -1
- package/dist/resolvers/delivery-listing.js +36 -33
- package/dist/resolvers/delivery-listing.js.map +1 -1
- package/dist/resolvers/delivery-tech-context.d.ts +7 -1
- package/dist/resolvers/delivery-tech-context.d.ts.map +1 -1
- package/dist/resolvers/delivery-tech-context.js +14 -11
- package/dist/resolvers/delivery-tech-context.js.map +1 -1
- package/dist/resolvers/deployment-profile.d.ts +8 -1
- package/dist/resolvers/deployment-profile.d.ts.map +1 -1
- package/dist/resolvers/deployment-profile.js +20 -17
- package/dist/resolvers/deployment-profile.js.map +1 -1
- package/dist/resolvers/focus-anchoring-injections.d.ts +26 -1
- package/dist/resolvers/focus-anchoring-injections.d.ts.map +1 -1
- package/dist/resolvers/focus-anchoring-injections.js +91 -88
- package/dist/resolvers/focus-anchoring-injections.js.map +1 -1
- package/dist/resolvers/focus-context.d.ts +9 -1
- package/dist/resolvers/focus-context.d.ts.map +1 -1
- package/dist/resolvers/focus-context.js +38 -35
- package/dist/resolvers/focus-context.js.map +1 -1
- package/dist/resolvers/focus-injections.d.ts +13 -1
- package/dist/resolvers/focus-injections.d.ts.map +1 -1
- package/dist/resolvers/focus-injections.js +60 -57
- package/dist/resolvers/focus-injections.js.map +1 -1
- package/dist/resolvers/focus-last-review-report.d.ts +2 -1
- package/dist/resolvers/focus-last-review-report.d.ts.map +1 -1
- package/dist/resolvers/focus-last-review-report.js +33 -30
- package/dist/resolvers/focus-last-review-report.js.map +1 -1
- package/dist/resolvers/focus-reality-tree.d.ts +15 -1
- package/dist/resolvers/focus-reality-tree.d.ts.map +1 -1
- package/dist/resolvers/focus-reality-tree.js +35 -32
- package/dist/resolvers/focus-reality-tree.js.map +1 -1
- package/dist/resolvers/git-diff-against-base.d.ts +8 -1
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +33 -30
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/guards-evaluation-results.d.ts +7 -1
- package/dist/resolvers/guards-evaluation-results.d.ts.map +1 -1
- package/dist/resolvers/guards-evaluation-results.js +25 -22
- package/dist/resolvers/guards-evaluation-results.js.map +1 -1
- package/dist/resolvers/index.d.ts +22 -40
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +112 -41
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/loop-context.d.ts +18 -1
- package/dist/resolvers/loop-context.d.ts.map +1 -1
- package/dist/resolvers/loop-context.js +21 -18
- package/dist/resolvers/loop-context.js.map +1 -1
- package/dist/resolvers/loop-delivery-index.d.ts +17 -1
- package/dist/resolvers/loop-delivery-index.d.ts.map +1 -1
- package/dist/resolvers/loop-delivery-index.js +51 -48
- package/dist/resolvers/loop-delivery-index.js.map +1 -1
- package/dist/resolvers/loop-documents.d.ts +9 -1
- package/dist/resolvers/loop-documents.d.ts.map +1 -1
- package/dist/resolvers/loop-documents.js +22 -19
- package/dist/resolvers/loop-documents.js.map +1 -1
- package/dist/resolvers/loop-expected-effects.d.ts +11 -1
- package/dist/resolvers/loop-expected-effects.d.ts.map +1 -1
- package/dist/resolvers/loop-expected-effects.js +53 -50
- package/dist/resolvers/loop-expected-effects.js.map +1 -1
- package/dist/resolvers/loop-frt-statement.d.ts +11 -1
- package/dist/resolvers/loop-frt-statement.d.ts.map +1 -1
- package/dist/resolvers/loop-frt-statement.js +28 -25
- package/dist/resolvers/loop-frt-statement.js.map +1 -1
- package/dist/resolvers/loop-injection.d.ts +10 -1
- package/dist/resolvers/loop-injection.d.ts.map +1 -1
- package/dist/resolvers/loop-injection.js +38 -35
- package/dist/resolvers/loop-injection.js.map +1 -1
- package/dist/resolvers/loop-persona.d.ts +20 -1
- package/dist/resolvers/loop-persona.d.ts.map +1 -1
- package/dist/resolvers/loop-persona.js +20 -17
- package/dist/resolvers/loop-persona.js.map +1 -1
- package/dist/resolvers/loop-questions.d.ts +8 -1
- package/dist/resolvers/loop-questions.d.ts.map +1 -1
- package/dist/resolvers/loop-questions.js +39 -36
- package/dist/resolvers/loop-questions.js.map +1 -1
- package/dist/resolvers/loop-upstream-udes.d.ts +11 -1
- package/dist/resolvers/loop-upstream-udes.d.ts.map +1 -1
- package/dist/resolvers/loop-upstream-udes.js +74 -71
- package/dist/resolvers/loop-upstream-udes.js.map +1 -1
- package/dist/resolvers/prd-context.d.ts +2 -0
- package/dist/resolvers/prd-context.d.ts.map +1 -1
- package/dist/resolvers/prd-context.js +16 -13
- package/dist/resolvers/prd-context.js.map +1 -1
- package/dist/resolvers/prd-persona.d.ts +2 -0
- package/dist/resolvers/prd-persona.d.ts.map +1 -1
- package/dist/resolvers/prd-persona.js +6 -3
- package/dist/resolvers/prd-persona.js.map +1 -1
- package/dist/resolvers/reality-metrics.d.ts +8 -1
- package/dist/resolvers/reality-metrics.d.ts.map +1 -1
- package/dist/resolvers/reality-metrics.js +73 -70
- package/dist/resolvers/reality-metrics.js.map +1 -1
- package/dist/resolvers/reality-projections.d.ts +7 -1
- package/dist/resolvers/reality-projections.d.ts.map +1 -1
- package/dist/resolvers/reality-projections.js +35 -32
- package/dist/resolvers/reality-projections.js.map +1 -1
- package/dist/resolvers/reality-tree-snapshot.d.ts +10 -1
- package/dist/resolvers/reality-tree-snapshot.d.ts.map +1 -1
- package/dist/resolvers/reality-tree-snapshot.js +34 -31
- package/dist/resolvers/reality-tree-snapshot.js.map +1 -1
- package/dist/resolvers/retired-injections.d.ts +10 -1
- package/dist/resolvers/retired-injections.d.ts.map +1 -1
- package/dist/resolvers/retired-injections.js +68 -65
- package/dist/resolvers/retired-injections.js.map +1 -1
- package/dist/resolvers/review-outcomes.d.ts +11 -1
- package/dist/resolvers/review-outcomes.d.ts.map +1 -1
- package/dist/resolvers/review-outcomes.js +27 -24
- package/dist/resolvers/review-outcomes.js.map +1 -1
- package/dist/resolvers/security-advisory.d.ts +2 -1
- package/dist/resolvers/security-advisory.d.ts.map +1 -1
- package/dist/resolvers/security-advisory.js +47 -44
- package/dist/resolvers/security-advisory.js.map +1 -1
- package/dist/resolvers/wiki-search.d.ts +8 -1
- package/dist/resolvers/wiki-search.d.ts.map +1 -1
- package/dist/resolvers/wiki-search.js +17 -14
- package/dist/resolvers/wiki-search.js.map +1 -1
- package/dist/resolvers/wiki-topic.d.ts +9 -1
- package/dist/resolvers/wiki-topic.d.ts.map +1 -1
- package/dist/resolvers/wiki-topic.js +21 -18
- package/dist/resolvers/wiki-topic.js.map +1 -1
- package/dist/resolvers/workflow-stages.d.ts +7 -1
- package/dist/resolvers/workflow-stages.d.ts.map +1 -1
- package/dist/resolvers/workflow-stages.js +20 -17
- package/dist/resolvers/workflow-stages.js.map +1 -1
- package/dist/review-defect-detector.d.ts +4 -1
- package/dist/review-defect-detector.d.ts.map +1 -1
- package/dist/review-defect-detector.js +6 -8
- package/dist/review-defect-detector.js.map +1 -1
- package/dist/self-update.d.ts +6 -0
- package/dist/self-update.d.ts.map +1 -1
- package/dist/self-update.js +6 -1
- package/dist/self-update.js.map +1 -1
- package/dist/spawner/index.d.ts +2 -1
- package/dist/spawner/index.d.ts.map +1 -1
- package/dist/spawner/index.js +2 -1
- package/dist/spawner/index.js.map +1 -1
- package/dist/spawner/spawn-team.d.ts +14 -52
- package/dist/spawner/spawn-team.d.ts.map +1 -1
- package/dist/spawner/spawn-team.js +14 -469
- package/dist/spawner/spawn-team.js.map +1 -1
- package/dist/staleness.d.ts +124 -0
- package/dist/staleness.d.ts.map +1 -0
- package/dist/staleness.js +215 -0
- package/dist/staleness.js.map +1 -0
- package/dist/state-cascade.d.ts +3 -2
- package/dist/state-cascade.d.ts.map +1 -1
- package/dist/state-cascade.js +7 -3
- package/dist/state-cascade.js.map +1 -1
- package/dist/types/focus.d.ts +5 -4
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/session.d.ts +2 -3
- package/dist/types/session.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.js +2 -23
- package/dist/unified-engine-lifecycle.js.map +1 -1
- package/dist/unified-shell-config.d.ts +2 -7
- package/dist/unified-shell-config.d.ts.map +1 -1
- package/dist/unified-shell-config.js +2 -23
- package/dist/unified-shell-config.js.map +1 -1
- package/dist/unified-shell-status.d.ts.map +1 -1
- package/dist/unified-shell-status.js +2 -4
- package/dist/unified-shell-status.js.map +1 -1
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +21 -24
- package/dist/unified-shell.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +6 -4
- package/dist/version-check.js.map +1 -1
- package/package.json +3 -3
- package/dist/pm/adaptive-poller.d.ts +0 -26
- package/dist/pm/adaptive-poller.d.ts.map +0 -1
- package/dist/pm/adaptive-poller.js +0 -53
- package/dist/pm/adaptive-poller.js.map +0 -1
- package/dist/pm/cascade-evaluator.d.ts +0 -29
- package/dist/pm/cascade-evaluator.d.ts.map +0 -1
- package/dist/pm/cascade-evaluator.js +0 -135
- package/dist/pm/cascade-evaluator.js.map +0 -1
- package/dist/pm/channel-email.d.ts +0 -42
- package/dist/pm/channel-email.d.ts.map +0 -1
- package/dist/pm/channel-email.js +0 -47
- package/dist/pm/channel-email.js.map +0 -1
- package/dist/pm/channel-slack.d.ts +0 -40
- package/dist/pm/channel-slack.d.ts.map +0 -1
- package/dist/pm/channel-slack.js +0 -46
- package/dist/pm/channel-slack.js.map +0 -1
- package/dist/pm/communication-drafter.d.ts +0 -44
- package/dist/pm/communication-drafter.d.ts.map +0 -1
- package/dist/pm/communication-drafter.js +0 -84
- package/dist/pm/communication-drafter.js.map +0 -1
- package/dist/pm/dialog-handler.d.ts +0 -32
- package/dist/pm/dialog-handler.d.ts.map +0 -1
- package/dist/pm/dialog-handler.js +0 -107
- package/dist/pm/dialog-handler.js.map +0 -1
- package/dist/pm/mitigation-correlator.d.ts +0 -29
- package/dist/pm/mitigation-correlator.d.ts.map +0 -1
- package/dist/pm/mitigation-correlator.js +0 -147
- package/dist/pm/mitigation-correlator.js.map +0 -1
- package/dist/pm/risk-scanner.d.ts +0 -28
- package/dist/pm/risk-scanner.d.ts.map +0 -1
- package/dist/pm/risk-scanner.js +0 -112
- package/dist/pm/risk-scanner.js.map +0 -1
- package/dist/pm-engine.d.ts +0 -96
- package/dist/pm-engine.d.ts.map +0 -1
- package/dist/pm-engine.js +0 -540
- package/dist/pm-engine.js.map +0 -1
- package/dist/pm-process.d.ts +0 -45
- package/dist/pm-process.d.ts.map +0 -1
- package/dist/pm-process.js +0 -195
- package/dist/pm-process.js.map +0 -1
- package/dist/pm-prompt-builder.d.ts +0 -23
- package/dist/pm-prompt-builder.d.ts.map +0 -1
- package/dist/pm-prompt-builder.js +0 -64
- package/dist/pm-prompt-builder.js.map +0 -1
- package/dist/session-lifecycle.d.ts +0 -78
- package/dist/session-lifecycle.d.ts.map +0 -1
- package/dist/session-lifecycle.js +0 -382
- package/dist/session-lifecycle.js.map +0 -1
- package/dist/types/pm.d.ts +0 -53
- package/dist/types/pm.d.ts.map +0 -1
- package/dist/types/pm.js +0 -10
- package/dist/types/pm.js.map +0 -1
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session lifecycle management for focus teams.
|
|
3
|
-
*
|
|
4
|
-
* Extracted from focus-executor.ts. Contains functions for session
|
|
5
|
-
* start/end, cleanup, error handling, team completion detection,
|
|
6
|
-
* termination, and deactivation checks.
|
|
7
|
-
*/
|
|
8
|
-
import { updateSession } from './supabase.js';
|
|
9
|
-
import { getReadyFocuses } from './supabase.js';
|
|
10
|
-
import { withRetry, sendMessage, DELIVERY_STATUS } from '@telora/daemon-core';
|
|
11
|
-
import { recordActivity, clearNarration } from './heartbeat.js';
|
|
12
|
-
import { buildWakeMessage } from './focus-prompt-builder.js';
|
|
13
|
-
import { getFocusDeliveries, getFocusIssues } from './queries/focuses.js';
|
|
14
|
-
import { OPEN_ISSUE_STATUSES } from './constants.js';
|
|
15
|
-
import { getActiveTeams, } from './focus-team-state.js';
|
|
16
|
-
import { mergeFocusBranch, escalateMergeConflict } from './focus-merge.js';
|
|
17
|
-
import { handleTeamCompletion, } from './completion/index.js';
|
|
18
|
-
import { isStatusTerminal, isStatusAgentActionable } from './stage-classifier.js';
|
|
19
|
-
import { getGovernor } from './spawner/index.js';
|
|
20
|
-
/**
|
|
21
|
-
* Handle a 'complete' event from the CompletionDetector.
|
|
22
|
-
*
|
|
23
|
-
* Queries current delivery and issue state to decide whether to:
|
|
24
|
-
* - Terminate the team (all deliveries terminal or no open issues remain), or
|
|
25
|
-
* - Send a mid-focus handoff message with remaining work.
|
|
26
|
-
*
|
|
27
|
-
* Extracted from the inline event callback in spawnFocusTeam to eliminate
|
|
28
|
-
* deep nesting inside an async Promise chain inside an event listener.
|
|
29
|
-
*/
|
|
30
|
-
async function handleCompletionEvent(ctx) {
|
|
31
|
-
const { focusId, focusName, teamState, completionDetector, proc } = ctx;
|
|
32
|
-
const [currentDeliveries, currentIssues] = await Promise.all([
|
|
33
|
-
getFocusDeliveries(focusId),
|
|
34
|
-
getFocusIssues(focusId),
|
|
35
|
-
]);
|
|
36
|
-
// If all deliveries are terminal, shut down
|
|
37
|
-
const allTerminal = currentDeliveries.every(d => isStatusTerminal(d.executionStatus ?? ''));
|
|
38
|
-
if (allTerminal) {
|
|
39
|
-
console.log(`[focus-executor] All deliveries terminal for "${focusName}" -- terminating team`);
|
|
40
|
-
terminateTeam(focusId);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Check if there are actionable deliveries with open issues
|
|
44
|
-
const actionableDeliveryIds = new Set(currentDeliveries
|
|
45
|
-
.filter(d => isStatusAgentActionable(d.executionStatus ?? ''))
|
|
46
|
-
.map(d => d.id));
|
|
47
|
-
if (actionableDeliveryIds.size === 0) {
|
|
48
|
-
console.log(`[focus-executor] No actionable deliveries for "${focusName}" -- terminating team`);
|
|
49
|
-
terminateTeam(focusId);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
// Check for open issues across actionable deliveries.
|
|
53
|
-
const hasOpenIssues = currentIssues.some(i => actionableDeliveryIds.has(i.deliveryId) && OPEN_ISSUE_STATUSES.has(i.status));
|
|
54
|
-
if (!hasOpenIssues) {
|
|
55
|
-
console.log(`[focus-executor] Actionable deliveries have no open issues for "${focusName}" -- ` +
|
|
56
|
-
`terminating team. Auto-advance will handle verify transition.`);
|
|
57
|
-
terminateTeam(focusId);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
// Mid-focus handoff: actionable work with open issues remains.
|
|
61
|
-
// Send work immediately and reset the completion detector for the next cycle.
|
|
62
|
-
console.log(`[focus-executor] Mid-focus handoff for "${focusName}" -- sending new work`);
|
|
63
|
-
const message = buildWakeMessage(currentDeliveries, currentIssues, teamState.knownDeliveryIds);
|
|
64
|
-
// Update tracking state
|
|
65
|
-
for (const d of currentDeliveries) {
|
|
66
|
-
teamState.knownDeliveryIds.add(d.id);
|
|
67
|
-
teamState.deliveryStageIds.set(d.id, d.currentWorkflowStageId);
|
|
68
|
-
}
|
|
69
|
-
completionDetector.reset();
|
|
70
|
-
sendMessage(proc.stdin, message);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Attach session lifecycle handlers to a team lead process.
|
|
74
|
-
*
|
|
75
|
-
* Wires up the 'complete', 'close', and 'error' event handlers that manage
|
|
76
|
-
* the full lifecycle of the team lead process: completion detection,
|
|
77
|
-
* resume-failure retry, cleanup, and error reporting.
|
|
78
|
-
*/
|
|
79
|
-
export function attachSessionLifecycle(ctx) {
|
|
80
|
-
const { proc, params, teamState, sessionId, focusId, focusName, completionDetector, activityTracker, logStreams, resumeId, spawnedAt, config, } = ctx;
|
|
81
|
-
const { stdoutLogStream, stderrStream, jsonlStream } = logStreams;
|
|
82
|
-
const governor = getGovernor();
|
|
83
|
-
// Handle completion -- check for more work or terminate.
|
|
84
|
-
// No idle phase: if actionable work remains, send it immediately (mid-focus
|
|
85
|
-
// handoff). If all work is done, terminate. A fresh team is spawned if new
|
|
86
|
-
// deliveries arrive later (~$0.50-1.00 exploration cost, but clean context).
|
|
87
|
-
completionDetector.on('complete', (info) => {
|
|
88
|
-
console.log(`[focus-executor] Team lead for "${focusName}" completed work cycle: ` +
|
|
89
|
-
`${info.turnCount} turns, $${info.totalCostUsd.toFixed(4)}`);
|
|
90
|
-
handleCompletionEvent({ focusId, focusName, teamState, completionDetector, proc }).catch(err => {
|
|
91
|
-
console.warn(`[focus-executor] Failed to check delivery state for "${focusName}":`, err.message);
|
|
92
|
-
// Fallback: terminate to avoid idle money burn.
|
|
93
|
-
terminateTeam(focusId);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
// Handle process exit
|
|
97
|
-
proc.on('close', async (code, signal) => {
|
|
98
|
-
console.log(`[focus-executor] Team lead for "${focusName}" exited (code: ${code}, signal: ${signal})`);
|
|
99
|
-
// Detect --resume failure: if the process exits quickly with a non-zero
|
|
100
|
-
// code and --resume was used, retry without resume. This handles cases
|
|
101
|
-
// where the session file was cleaned up, corrupted, or incompatible.
|
|
102
|
-
const RESUME_FAILURE_THRESHOLD_MS = 15_000;
|
|
103
|
-
const elapsedMs = Date.now() - spawnedAt;
|
|
104
|
-
if (resumeId && code !== 0 && code !== null && elapsedMs < RESUME_FAILURE_THRESHOLD_MS) {
|
|
105
|
-
console.warn(`[focus-executor] Resume failed for "${focusName}" (exited in ${elapsedMs}ms), retrying without resume`);
|
|
106
|
-
// Release governor slot and clean up minimal state
|
|
107
|
-
governor?.releaseSlot('focus');
|
|
108
|
-
completionDetector.destroy();
|
|
109
|
-
stdoutLogStream.end();
|
|
110
|
-
stderrStream.end();
|
|
111
|
-
jsonlStream.end();
|
|
112
|
-
// Clean up session and team state
|
|
113
|
-
try {
|
|
114
|
-
await updateSession(sessionId, {
|
|
115
|
-
status: 'failed',
|
|
116
|
-
exit_reason: `Resume failed (code ${code}), retrying without resume`,
|
|
117
|
-
exit_category: 'internal',
|
|
118
|
-
ended_at: new Date().toISOString(),
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
catch (updateErr) {
|
|
122
|
-
console.warn('[focus-executor] Failed to update session after resume failure:', updateErr.message);
|
|
123
|
-
}
|
|
124
|
-
teamState.phase = 'terminated';
|
|
125
|
-
const activeTeams = getActiveTeams();
|
|
126
|
-
activeTeams.delete(focusId);
|
|
127
|
-
// Re-spawn without --resume (dynamic import to avoid circular dependency).
|
|
128
|
-
// Clear both the legacy slot and the lineage map so the retry starts
|
|
129
|
-
// fresh (INJ-A).
|
|
130
|
-
const { spawnFocusTeam } = await import('./spawner/index.js');
|
|
131
|
-
await spawnFocusTeam({ ...params, lastClaudeSessionId: null, claudeSessionIds: null });
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
// Release governor slot (if governor is configured)
|
|
135
|
-
governor?.releaseSlot('focus');
|
|
136
|
-
// Null out stdin so post-exit merge logic falls through to the
|
|
137
|
-
// fallback resolution agent instead of sending messages to a dead process.
|
|
138
|
-
teamState.leadStdin = null;
|
|
139
|
-
// Final activity flush before cleanup
|
|
140
|
-
try {
|
|
141
|
-
await activityTracker.finalFlush();
|
|
142
|
-
}
|
|
143
|
-
catch (err) {
|
|
144
|
-
console.warn('[focus-executor] activityTracker.finalFlush failed:', err.message);
|
|
145
|
-
}
|
|
146
|
-
// Clean up streams
|
|
147
|
-
completionDetector.destroy();
|
|
148
|
-
stdoutLogStream.end();
|
|
149
|
-
stderrStream.end();
|
|
150
|
-
jsonlStream.end();
|
|
151
|
-
recordActivity();
|
|
152
|
-
await handleTeamCompletion({
|
|
153
|
-
config,
|
|
154
|
-
teamState,
|
|
155
|
-
sessionId,
|
|
156
|
-
code,
|
|
157
|
-
signal,
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
proc.on('error', async (err) => {
|
|
161
|
-
console.error(`[focus-executor] Team lead for "${focusName}" error:`, err.message);
|
|
162
|
-
// Release governor slot (if governor is configured)
|
|
163
|
-
governor?.releaseSlot('focus');
|
|
164
|
-
try {
|
|
165
|
-
await withRetry(() => updateSession(sessionId, {
|
|
166
|
-
status: 'failed',
|
|
167
|
-
exit_reason: `Process error: ${err.message}`,
|
|
168
|
-
exit_category: 'error',
|
|
169
|
-
ended_at: new Date().toISOString(),
|
|
170
|
-
}), { maxAttempts: 3, baseDelayMs: 1000, label: 'session-update-error' });
|
|
171
|
-
}
|
|
172
|
-
catch (updateErr) {
|
|
173
|
-
console.warn(`[focus-executor] Failed to update session after retries:`, updateErr.message);
|
|
174
|
-
}
|
|
175
|
-
completionDetector.destroy();
|
|
176
|
-
stdoutLogStream.end();
|
|
177
|
-
stderrStream.end();
|
|
178
|
-
jsonlStream.end();
|
|
179
|
-
// Worktree is focus-owned -- do not remove on team error
|
|
180
|
-
teamState.phase = 'terminated';
|
|
181
|
-
const activeTeams = getActiveTeams();
|
|
182
|
-
activeTeams.delete(focusId);
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
// ── Team lifecycle management ────────────────────────────────────────
|
|
186
|
-
/**
|
|
187
|
-
* Terminate a focus team.
|
|
188
|
-
*
|
|
189
|
-
* Sends a deactivation message via stdin (if open) before SIGTERM
|
|
190
|
-
* to allow the team lead to process the shutdown gracefully.
|
|
191
|
-
*/
|
|
192
|
-
export function terminateTeam(focusId) {
|
|
193
|
-
const activeTeams = getActiveTeams();
|
|
194
|
-
const team = activeTeams.get(focusId);
|
|
195
|
-
if (!team || !team.leadPid)
|
|
196
|
-
return false;
|
|
197
|
-
// Warn if terminating while conflict resolution is in progress
|
|
198
|
-
if (team.resolvingMergeConflict) {
|
|
199
|
-
console.warn(`[focus-executor] Terminating team "${team.focusName}" while merge conflict resolution is in progress`);
|
|
200
|
-
}
|
|
201
|
-
console.log(`[focus-executor] Terminating team for focus "${team.focusName}" (phase: ${team.phase})`);
|
|
202
|
-
team.phase = 'shutting_down';
|
|
203
|
-
clearNarration(focusId);
|
|
204
|
-
try {
|
|
205
|
-
// Send a deactivation message first to let the team lead process it
|
|
206
|
-
if (team.leadStdin) {
|
|
207
|
-
sendMessage(team.leadStdin, 'Pipeline deactivated. Exit now.');
|
|
208
|
-
// Close stdin after a short delay to let the message be processed
|
|
209
|
-
setTimeout(() => {
|
|
210
|
-
try {
|
|
211
|
-
team.leadStdin?.end();
|
|
212
|
-
}
|
|
213
|
-
catch (e) {
|
|
214
|
-
console.debug('[focus-executor] stdin.end() failed (may already be closed):', e.message);
|
|
215
|
-
}
|
|
216
|
-
}, 5000);
|
|
217
|
-
}
|
|
218
|
-
// SIGTERM to the lead process -- it should clean up workers
|
|
219
|
-
process.kill(team.leadPid, 'SIGTERM');
|
|
220
|
-
// Escalate to SIGKILL after timeout
|
|
221
|
-
setTimeout(() => {
|
|
222
|
-
if (activeTeams.has(focusId) && team.leadPid) {
|
|
223
|
-
try {
|
|
224
|
-
process.kill(team.leadPid, 'SIGKILL');
|
|
225
|
-
}
|
|
226
|
-
catch (e) {
|
|
227
|
-
console.debug('[focus-executor] SIGKILL failed (process may have exited):', e.message);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}, 30000);
|
|
231
|
-
return true;
|
|
232
|
-
}
|
|
233
|
-
catch (e) {
|
|
234
|
-
console.debug(`[focus-executor] terminateTeam: process may have already exited:`, e.message);
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Wait for a team's process to exit (leave activeTeams).
|
|
240
|
-
*
|
|
241
|
-
* Polls activeTeams until the focus is no longer present,
|
|
242
|
-
* which happens when handleTeamCompletion runs on the 'close' event.
|
|
243
|
-
* If the timeout expires, sends SIGKILL and waits briefly.
|
|
244
|
-
*
|
|
245
|
-
* @param focusId - Focus to wait for
|
|
246
|
-
* @param timeoutMs - Max wait time in ms (default 30s)
|
|
247
|
-
* @returns true if team exited within timeout, false if forced
|
|
248
|
-
*/
|
|
249
|
-
export async function waitForTeamExit(focusId, timeoutMs = 30000) {
|
|
250
|
-
const activeTeams = getActiveTeams();
|
|
251
|
-
const team = activeTeams.get(focusId);
|
|
252
|
-
if (!team)
|
|
253
|
-
return true; // Already gone
|
|
254
|
-
const deadline = Date.now() + timeoutMs;
|
|
255
|
-
const pollMs = 500;
|
|
256
|
-
while (Date.now() < deadline) {
|
|
257
|
-
if (!activeTeams.has(focusId))
|
|
258
|
-
return true;
|
|
259
|
-
await new Promise(resolve => setTimeout(resolve, pollMs));
|
|
260
|
-
}
|
|
261
|
-
// Timeout expired -- escalate to SIGKILL
|
|
262
|
-
if (team.leadPid) {
|
|
263
|
-
console.warn(`[focus-executor] Team "${team.focusName}" did not exit within ${timeoutMs}ms, sending SIGKILL`);
|
|
264
|
-
try {
|
|
265
|
-
process.kill(team.leadPid, 'SIGKILL');
|
|
266
|
-
}
|
|
267
|
-
catch { /* process may already be gone */ }
|
|
268
|
-
// Brief wait for SIGKILL to take effect
|
|
269
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
270
|
-
}
|
|
271
|
-
return !activeTeams.has(focusId);
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Terminate all active teams.
|
|
275
|
-
*/
|
|
276
|
-
export function terminateAllTeams() {
|
|
277
|
-
const activeTeams = getActiveTeams();
|
|
278
|
-
for (const focusId of activeTeams.keys()) {
|
|
279
|
-
terminateTeam(focusId);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Detect focuses that have been deactivated (agent role removed)
|
|
284
|
-
* and shut down their active teams.
|
|
285
|
-
*/
|
|
286
|
-
export async function detectDeactivatedFocuses(config) {
|
|
287
|
-
const activeTeams = getActiveTeams();
|
|
288
|
-
if (activeTeams.size === 0)
|
|
289
|
-
return;
|
|
290
|
-
try {
|
|
291
|
-
const readyFocuses = await getReadyFocuses(config.organizationId, config.productId);
|
|
292
|
-
const activeFocusIds = new Set(readyFocuses.map(s => s.focus_id));
|
|
293
|
-
for (const [focusId, team] of activeTeams) {
|
|
294
|
-
if (!activeFocusIds.has(focusId) && team.phase !== 'shutting_down' && team.phase !== 'terminated') {
|
|
295
|
-
console.log(`[focus-executor] Focus "${team.focusName}" deactivated -- shutting down team`);
|
|
296
|
-
terminateTeam(focusId);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
catch (err) {
|
|
301
|
-
console.warn(`[focus-executor] Failed to check for deactivated focuses:`, err.message);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Check active teams for newly completed deliveries and merge
|
|
306
|
-
* the focus branch to integration incrementally.
|
|
307
|
-
*
|
|
308
|
-
* Called from the poll loop. For each active team, queries delivery
|
|
309
|
-
* statuses and triggers a merge when any delivery reaches verify/done
|
|
310
|
-
* that hasn't already been merged mid-flight.
|
|
311
|
-
*
|
|
312
|
-
* After processing merges, checks if ALL active deliveries are terminal
|
|
313
|
-
* and merged. If so, terminates the team proactively since no more work
|
|
314
|
-
* remains. The focus stays active in the DB -- if new deliveries
|
|
315
|
-
* arrive later, the next poll cycle spawns a fresh team.
|
|
316
|
-
*/
|
|
317
|
-
export async function checkAndMergeCompletedDeliveries(config) {
|
|
318
|
-
const activeTeams = getActiveTeams();
|
|
319
|
-
if (activeTeams.size === 0)
|
|
320
|
-
return;
|
|
321
|
-
for (const [focusId, team] of activeTeams) {
|
|
322
|
-
// Only check teams that are actively executing
|
|
323
|
-
if (team.phase !== 'executing')
|
|
324
|
-
continue;
|
|
325
|
-
// Skip merge attempts while team lead is resolving a merge conflict
|
|
326
|
-
if (team.resolvingMergeConflict) {
|
|
327
|
-
console.log(`[focus-executor] Skipping merge check for "${team.focusName}" -- conflict resolution in progress`);
|
|
328
|
-
continue;
|
|
329
|
-
}
|
|
330
|
-
try {
|
|
331
|
-
const deliveries = await getFocusDeliveries(focusId);
|
|
332
|
-
// Find deliveries in verify/done that we haven't merged for yet
|
|
333
|
-
const newlyCompleted = deliveries.filter(d => (d.executionStatus === DELIVERY_STATUS.VERIFY || d.executionStatus === DELIVERY_STATUS.DONE)
|
|
334
|
-
&& !team.mergedDeliveryIds.has(d.id));
|
|
335
|
-
if (newlyCompleted.length > 0) {
|
|
336
|
-
const completedNames = newlyCompleted.map(d => d.name).join(', ');
|
|
337
|
-
console.log(`[focus-executor] ${newlyCompleted.length} delivery(ies) completed mid-flight for "${team.focusName}": ${completedNames} -- merging to integration`);
|
|
338
|
-
// One merge covers all completed deliveries (same branch).
|
|
339
|
-
// Pass the newly-completed IDs so git state is recorded only for
|
|
340
|
-
// these — never for queued/planning deliveries on the same branch.
|
|
341
|
-
const mergeResult = await mergeFocusBranch(config, team, team.leadSessionId ?? '', team.branchName, newlyCompleted.map(d => d.id));
|
|
342
|
-
if (mergeResult.mergeSucceeded) {
|
|
343
|
-
// Track merged deliveries (git state already reported by mergeFocusBranch)
|
|
344
|
-
for (const d of newlyCompleted) {
|
|
345
|
-
team.mergedDeliveryIds.add(d.id);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
console.warn(`[focus-executor] Mid-flight merge failed for "${team.focusName}": ${mergeResult.exitReason}`);
|
|
350
|
-
// Escalate merge conflict for each unmerged delivery
|
|
351
|
-
for (const d of newlyCompleted) {
|
|
352
|
-
escalateMergeConflict({
|
|
353
|
-
organizationId: team.organizationId,
|
|
354
|
-
sessionId: team.leadSessionId ?? '',
|
|
355
|
-
deliveryId: d.id,
|
|
356
|
-
deliveryName: d.name,
|
|
357
|
-
branchName: team.branchName,
|
|
358
|
-
integrationBranch: config.integrationBranch,
|
|
359
|
-
mergeError: mergeResult.exitReason,
|
|
360
|
-
}).catch(err => console.warn(`[focus-executor] escalateMergeConflict failed for ${d.id}:`, err.message));
|
|
361
|
-
}
|
|
362
|
-
// Don't mark as merged -- will retry next poll. Team continues working.
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
// ── All-done detection ──────────────────────────────────────
|
|
366
|
-
// If any delivery is queued or running, the team still has work.
|
|
367
|
-
// Otherwise the team is idle, waiting for the daemon to push new work.
|
|
368
|
-
const teamWork = deliveries.filter(d => isStatusAgentActionable(d.executionStatus ?? ''));
|
|
369
|
-
if (teamWork.length > 0) {
|
|
370
|
-
console.log(`[focus-executor] ${teamWork.length} delivery(ies) still queued/running for "${team.focusName}" -- team continues`);
|
|
371
|
-
continue;
|
|
372
|
-
}
|
|
373
|
-
// No queued/running deliveries -- team is idle, completion detector
|
|
374
|
-
// handles the actual idle transition. Log for observability.
|
|
375
|
-
console.log(`[focus-executor] All deliveries complete for "${team.focusName}" -- team is idle`);
|
|
376
|
-
}
|
|
377
|
-
catch (err) {
|
|
378
|
-
console.warn(`[focus-executor] Failed to check completed deliveries for "${team.focusName}":`, err.message);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
//# sourceMappingURL=session-lifecycle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../src/session-lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/types/pm.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PM process supervision types.
|
|
3
|
-
*/
|
|
4
|
-
import type { ChildProcess } from 'node:child_process';
|
|
5
|
-
import type { Writable } from 'node:stream';
|
|
6
|
-
/**
|
|
7
|
-
* State of a supervised PM Claude Code process.
|
|
8
|
-
*/
|
|
9
|
-
export interface PMProcessState {
|
|
10
|
-
/** Product this PM process manages. */
|
|
11
|
-
productId: string;
|
|
12
|
-
/** Spawned child process handle. */
|
|
13
|
-
proc: ChildProcess;
|
|
14
|
-
/** PM session ID from the database. */
|
|
15
|
-
pmSessionId: string;
|
|
16
|
-
/** Claude Code session ID (set after stream init event). */
|
|
17
|
-
claudeSessionId?: string;
|
|
18
|
-
/** Current phase of the PM process. */
|
|
19
|
-
phase: 'starting' | 'running' | 'stopping' | 'crashed';
|
|
20
|
-
/** Number of times this process has been restarted. */
|
|
21
|
-
restartCount: number;
|
|
22
|
-
/** Timestamp of last restart (for backoff calculation). */
|
|
23
|
-
lastRestartAt: Date | null;
|
|
24
|
-
/** Stdin writable for sending messages. */
|
|
25
|
-
stdin: Writable;
|
|
26
|
-
/** Timestamp when this process was spawned (for maxSessionAge checks). */
|
|
27
|
-
spawnedAt: Date;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* PM-specific configuration fields (resolved from daemon.json engines.pm section).
|
|
31
|
-
*
|
|
32
|
-
* Fields resolve with priority: env var > daemon.json engines.pm > default.
|
|
33
|
-
* - loopIntervalMinutes: TELORA_PM_LOOP_INTERVAL (in minutes)
|
|
34
|
-
* - maxRestarts: TELORA_PM_MAX_RESTARTS
|
|
35
|
-
* - maxSessionAgeMs: TELORA_PM_MAX_SESSION_AGE (in minutes, converted to ms)
|
|
36
|
-
*/
|
|
37
|
-
export interface PMProcessConfig {
|
|
38
|
-
/** Interval for the /loop command in minutes. Default: 240 (4 hours). */
|
|
39
|
-
loopIntervalMinutes: number;
|
|
40
|
-
/** Maximum restart attempts before giving up. Default: 5. */
|
|
41
|
-
maxRestarts: number;
|
|
42
|
-
/** Whether process supervision is enabled. Default: true. */
|
|
43
|
-
processEnabled: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Maximum age (ms) of a PM session before a health restart is triggered.
|
|
46
|
-
* When a running PM process exceeds this age, the engine terminates and
|
|
47
|
-
* respawns it to keep the session fresh. Default: 86400000 (24 hours).
|
|
48
|
-
* Set to 0 to disable age-based restarts.
|
|
49
|
-
*/
|
|
50
|
-
maxSessionAgeMs: number;
|
|
51
|
-
}
|
|
52
|
-
export declare const DEFAULT_PM_PROCESS_CONFIG: PMProcessConfig;
|
|
53
|
-
//# sourceMappingURL=pm.d.ts.map
|
package/dist/types/pm.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pm.d.ts","sourceRoot":"","sources":["../../src/types/pm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAElB,oCAAoC;IACpC,IAAI,EAAE,YAAY,CAAC;IAEnB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,uCAAuC;IACvC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAEvD,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IAErB,2DAA2D;IAC3D,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAE3B,2CAA2C;IAC3C,KAAK,EAAE,QAAQ,CAAC;IAEhB,0EAA0E;IAC1E,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,mBAAmB,EAAE,MAAM,CAAC;IAE5B,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IAEpB,6DAA6D;IAC7D,cAAc,EAAE,OAAO,CAAC;IAExB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,yBAAyB,EAAE,eAKvC,CAAC"}
|
package/dist/types/pm.js
DELETED
package/dist/types/pm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pm.js","sourceRoot":"","sources":["../../src/types/pm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgEH,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,mBAAmB,EAAE,GAAG;IACxB,WAAW,EAAE,CAAC;IACd,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;CAClD,CAAC"}
|