@ironbee-ai/cli 0.18.4 → 0.18.5
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/CHANGELOG.md +6 -0
- package/dist/clients/codex/hooks/activity-end.d.ts.map +1 -1
- package/dist/clients/codex/hooks/activity-end.js +19 -12
- package/dist/clients/codex/hooks/activity-end.js.map +1 -1
- package/dist/clients/codex/hooks/verify-gate.d.ts.map +1 -1
- package/dist/clients/codex/hooks/verify-gate.js +27 -14
- package/dist/clients/codex/hooks/verify-gate.js.map +1 -1
- package/dist/hooks/core/activity-end.d.ts +7 -1
- package/dist/hooks/core/activity-end.d.ts.map +1 -1
- package/dist/hooks/core/activity-end.js +8 -1
- package/dist/hooks/core/activity-end.js.map +1 -1
- package/dist/hooks/core/activity.d.ts +11 -1
- package/dist/hooks/core/activity.d.ts.map +1 -1
- package/dist/hooks/core/activity.js +12 -1
- package/dist/hooks/core/activity.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.18.5 (2026-06-05)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **codex:** gate Stop-as-checkpoint session_end on activity closure ([0cd3ed1](https://github.com/ironbee-ai/ironbee-cli/commit/0cd3ed1cfb995f9783c75cc689a464c5dde950f8))
|
|
8
|
+
|
|
3
9
|
## 0.18.4 (2026-06-04)
|
|
4
10
|
|
|
5
11
|
### Bug Fixes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-end.d.ts","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/activity-end.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"activity-end.d.ts","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/activity-end.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD3D"}
|
|
@@ -29,18 +29,25 @@ async function run(projectDir) {
|
|
|
29
29
|
// the wire ships activity_id: "" → backend can't correlate the
|
|
30
30
|
// API-cost snapshot with the turn that produced it.
|
|
31
31
|
const preStopActivityId = (0, session_state_1.readState)(sessionDir)?.activeActivityId ?? "";
|
|
32
|
-
await (0, activity_end_1.runActivityEnd)({ sessionDir, actionsFile, projectDir, sessionId });
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
const activityClosed = await (0, activity_end_1.runActivityEnd)({ sessionDir, actionsFile, projectDir, sessionId });
|
|
33
|
+
// Stop-as-checkpoint session_end — gated on the activity having actually
|
|
34
|
+
// closed, so a session_end is never written while an activity is still open
|
|
35
|
+
// (`session > activity` hierarchy). Same rule as enforce-mode verify-gate.
|
|
36
|
+
// Codex sessions abandoned with no open activity are closed by backend
|
|
37
|
+
// inactivity reconciliation instead. See docs/flow.md.
|
|
38
|
+
if (activityClosed) {
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
const checkpoint = {
|
|
41
|
+
...(0, actions_1.baseFields)(actionsFile),
|
|
42
|
+
id: (0, actions_1.deterministicSessionEndId)(sessionId),
|
|
43
|
+
type: "session_end",
|
|
44
|
+
timestamp: now,
|
|
45
|
+
session_id: sessionId,
|
|
46
|
+
duration: (0, actions_1.findDurationSinceLastAction)(actionsFile, "session_start", now),
|
|
47
|
+
reason: "checkpoint",
|
|
48
|
+
};
|
|
49
|
+
await (0, actions_1.appendAction)(actionsFile, checkpoint);
|
|
50
|
+
}
|
|
44
51
|
// Codex analytics: api_request + session_status + session_analytics —
|
|
45
52
|
// all emitted in a detached worker so the Stop hook returns fast.
|
|
46
53
|
// session_turn_analytics + session_context are out of scope on Codex
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-end.js","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/activity-end.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAiBH,
|
|
1
|
+
{"version":3,"file":"activity-end.js","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/activity-end.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAiBH,kBAwDC;AAvED,yDAMqC;AACrC,mEAAkE;AAClE,gDAAyD;AACzD,gDAAmD;AACnD,8CAA+C;AAC/C,0DAAmF;AACnF,qEAA8D;AAC9D,kCAA8C;AAEvC,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,MAAM,KAAK,GAA2C,IAAA,0BAAmB,EAAC,IAAA,iBAAS,GAAE,CAAC,CAAC;IACvF,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAC1D,IAAA,mBAAU,EAAC,GAAG,UAAU,cAAc,CAAC,CAAC;IAExC,uEAAuE;IACvE,oDAAoD;IACpD,sEAAsE;IACtE,oEAAoE;IACpE,+DAA+D;IAC/D,oDAAoD;IACpD,MAAM,iBAAiB,GAAW,IAAA,yBAAS,EAAC,UAAU,CAAC,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAEhF,MAAM,cAAc,GAAY,MAAM,IAAA,6BAAc,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzG,yEAAyE;IACzE,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,uDAAuD;IACvD,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAqB;YACjC,GAAG,IAAA,oBAAU,EAAC,WAAW,CAAC;YAC1B,EAAE,EAAE,IAAA,mCAAyB,EAAC,SAAS,CAAC;YACxC,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,IAAA,qCAA2B,EAAC,WAAW,EAAE,eAAe,EAAE,GAAG,CAAC;YACxE,MAAM,EAAE,YAAY;SACvB,CAAC;QACF,MAAM,IAAA,sBAAY,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,sEAAsE;IACtE,kEAAkE;IAClE,qEAAqE;IACrE,IAAI,CAAC;QACD,MAAM,KAAK,GAAiC,IAAA,yBAAS,EAAC,UAAU,CAAC,CAAC;QAClE,IAAA,yCAAiC,EAAC;YAC9B,UAAU;YACV,SAAS;YACT,WAAW,EAAE,KAAK,CAAC,eAAe;YAClC,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,SAAS;YACxC,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,SAAS;YACxC,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,SAAS;YACxC,UAAU,EAAE,iBAAiB;SAChC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAC3C,IAAA,qBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"verify-gate.d.ts","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/verify-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,wBAAsB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgG3D"}
|
|
@@ -47,22 +47,35 @@ async function run(projectDir) {
|
|
|
47
47
|
// reads `activeActivityId: undefined` and the wire field ships as
|
|
48
48
|
// empty string. Hits 100% of Codex sessions with verification enabled.
|
|
49
49
|
const preStopActivityId = (0, session_state_1.readState)(sessionDir)?.activeActivityId ?? "";
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
// Only an allow Stop closes the activity. Capture whether an activity was
|
|
51
|
+
// actually closed — the Stop-as-checkpoint session_end below is gated on it.
|
|
52
|
+
const activityClosed = result.action === "allow"
|
|
53
|
+
? await (0, activity_1.endActivity)({ sessionDir, actionsFile })
|
|
54
|
+
: false;
|
|
53
55
|
// Stop-as-checkpoint: write tentative session_end with deterministic id.
|
|
54
56
|
// Backend dedup `(session_id, id)` keeps the latest snapshot.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
//
|
|
58
|
+
// Gated on `activityClosed` to preserve the `session > activity` hierarchy:
|
|
59
|
+
// Codex has no SessionEnd hook, so this is the only session_end source — but
|
|
60
|
+
// a session_end must never be written while an activity is still open. On a
|
|
61
|
+
// BLOCK Stop the turn continues (activity stays open) so we emit nothing; on
|
|
62
|
+
// an allow Stop with no open activity (already reconciled) there is likewise
|
|
63
|
+
// nothing to checkpoint. Sessions abandoned mid-turn (blocked, then a
|
|
64
|
+
// hookless Esc/`/quit` — #22858) therefore get NO session_end from the CLI
|
|
65
|
+
// and are closed by backend inactivity reconciliation. See docs/flow.md.
|
|
66
|
+
if (activityClosed) {
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
const checkpoint = {
|
|
69
|
+
...(0, actions_1.baseFields)(actionsFile),
|
|
70
|
+
id: (0, actions_1.deterministicSessionEndId)(sessionId),
|
|
71
|
+
type: "session_end",
|
|
72
|
+
timestamp: now,
|
|
73
|
+
session_id: sessionId,
|
|
74
|
+
duration: (0, actions_1.findDurationSinceLastAction)(actionsFile, "session_start", now),
|
|
75
|
+
reason: "checkpoint",
|
|
76
|
+
};
|
|
77
|
+
await (0, actions_1.appendAction)(actionsFile, checkpoint);
|
|
78
|
+
}
|
|
66
79
|
// Codex analytics: api_request + session_status + session_analytics —
|
|
67
80
|
// all emitted by the detached worker (mirror of Claude's
|
|
68
81
|
// spawnDetachedAnalyticsWorker pattern) so the Stop hook returns in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAoBH,
|
|
1
|
+
{"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/codex/hooks/verify-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,5 +24,11 @@ export interface ActivityEndInput {
|
|
|
24
24
|
projectDir: string;
|
|
25
25
|
sessionId: string;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Returns whether an open activity was actually closed (propagated from
|
|
29
|
+
* `endActivity`). Codex's monitoring-mode Stop adapter gates its
|
|
30
|
+
* Stop-as-checkpoint `session_end` on this so a `session_end` is never written
|
|
31
|
+
* while an activity is still open.
|
|
32
|
+
*/
|
|
33
|
+
export declare function runActivityEnd(input: ActivityEndInput): Promise<boolean>;
|
|
28
34
|
//# sourceMappingURL=activity-end.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-end.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/activity-end.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"activity-end.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/activity-end.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAe9E"}
|
|
@@ -24,6 +24,12 @@ exports.runActivityEnd = runActivityEnd;
|
|
|
24
24
|
const activity_1 = require("./activity");
|
|
25
25
|
const session_state_1 = require("./session-state");
|
|
26
26
|
const queue_1 = require("../../queue");
|
|
27
|
+
/**
|
|
28
|
+
* Returns whether an open activity was actually closed (propagated from
|
|
29
|
+
* `endActivity`). Codex's monitoring-mode Stop adapter gates its
|
|
30
|
+
* Stop-as-checkpoint `session_end` on this so a `session_end` is never written
|
|
31
|
+
* while an activity is still open.
|
|
32
|
+
*/
|
|
27
33
|
async function runActivityEnd(input) {
|
|
28
34
|
const { sessionDir, actionsFile, projectDir, sessionId } = input;
|
|
29
35
|
// Close any verification/fix cycle left open at the turn boundary (assist
|
|
@@ -32,11 +38,12 @@ async function runActivityEnd(input) {
|
|
|
32
38
|
// Runs BEFORE endActivity so the cycle-end events still carry the active
|
|
33
39
|
// activity_id.
|
|
34
40
|
await (0, session_state_1.closeOpenCycles)(sessionDir, actionsFile, "stop");
|
|
35
|
-
await (0, activity_1.endActivity)({ sessionDir, actionsFile });
|
|
41
|
+
const activityClosed = await (0, activity_1.endActivity)({ sessionDir, actionsFile });
|
|
36
42
|
(0, queue_1.flushInBackground)(projectDir, sessionId);
|
|
37
43
|
// Re-attempt prior TransientError snapshots — covers cases where this
|
|
38
44
|
// Stop is one of many before SessionEnd (which may be days away or
|
|
39
45
|
// never fire on Codex).
|
|
40
46
|
(0, queue_1.flushStragglersInBackground)(projectDir, sessionId);
|
|
47
|
+
return activityClosed;
|
|
41
48
|
}
|
|
42
49
|
//# sourceMappingURL=activity-end.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-end.js","sourceRoot":"","sources":["../../../src/hooks/core/activity-end.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;
|
|
1
|
+
{"version":3,"file":"activity-end.js","sourceRoot":"","sources":["../../../src/hooks/core/activity-end.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;AAmBH,wCAeC;AAhCD,yCAAyC;AACzC,mDAAkD;AAClD,uCAA6E;AAS7E;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,KAAuB;IACxD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACjE,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,eAAe;IACf,MAAM,IAAA,+BAAe,EAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,cAAc,GAAY,MAAM,IAAA,sBAAW,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/E,IAAA,yBAAiB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzC,sEAAsE;IACtE,mEAAmE;IACnE,wBAAwB;IACxB,IAAA,mCAA2B,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,cAAc,CAAC;AAC1B,CAAC"}
|
|
@@ -16,5 +16,15 @@ export interface EndActivityInput {
|
|
|
16
16
|
actionsFile: string;
|
|
17
17
|
}
|
|
18
18
|
export declare function startActivity(input: StartActivityInput): Promise<void>;
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Close the active activity, writing an `activity_end` event.
|
|
21
|
+
*
|
|
22
|
+
* Returns `true` when an open activity was actually closed (an `activity_end`
|
|
23
|
+
* was written), `false` when there was nothing to close (no-op). Callers that
|
|
24
|
+
* gate a parent-lifecycle write on the activity having closed — notably the
|
|
25
|
+
* Codex Stop-as-checkpoint `session_end` — use this to preserve the
|
|
26
|
+
* `session > activity` hierarchy: never emit `session_end` while an activity
|
|
27
|
+
* is still open.
|
|
28
|
+
*/
|
|
29
|
+
export declare function endActivity(input: EndActivityInput): Promise<boolean>;
|
|
20
30
|
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/hooks/core/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5E;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuB3E"}
|
|
@@ -31,10 +31,20 @@ async function startActivity(input) {
|
|
|
31
31
|
await (0, actions_1.appendAction)(actionsFile, entry);
|
|
32
32
|
logger_1.logger.debug(`activity-start: ${activityId} source=${source ?? "unknown"}`);
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Close the active activity, writing an `activity_end` event.
|
|
36
|
+
*
|
|
37
|
+
* Returns `true` when an open activity was actually closed (an `activity_end`
|
|
38
|
+
* was written), `false` when there was nothing to close (no-op). Callers that
|
|
39
|
+
* gate a parent-lifecycle write on the activity having closed — notably the
|
|
40
|
+
* Codex Stop-as-checkpoint `session_end` — use this to preserve the
|
|
41
|
+
* `session > activity` hierarchy: never emit `session_end` while an activity
|
|
42
|
+
* is still open.
|
|
43
|
+
*/
|
|
34
44
|
async function endActivity(input) {
|
|
35
45
|
const { sessionDir, actionsFile } = input;
|
|
36
46
|
if (!(0, session_state_1.isActive)(sessionDir)) {
|
|
37
|
-
return;
|
|
47
|
+
return false;
|
|
38
48
|
}
|
|
39
49
|
const activityId = (0, session_state_1.getActiveActivityId)(sessionDir);
|
|
40
50
|
(0, session_state_1.clearActiveActivity)(sessionDir);
|
|
@@ -49,5 +59,6 @@ async function endActivity(input) {
|
|
|
49
59
|
};
|
|
50
60
|
await (0, actions_1.appendAction)(actionsFile, entry);
|
|
51
61
|
logger_1.logger.debug(`activity-end: ${activityId ?? ""} duration=${duration ?? "unknown"}`);
|
|
62
|
+
return true;
|
|
52
63
|
}
|
|
53
64
|
//# sourceMappingURL=activity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/hooks/core/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAkBH,sCAmBC;
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/hooks/core/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAkBH,sCAmBC;AAYD,kCAuBC;AAtED,mCAAoC;AACpC,6CAA0C;AAC1C,mDAAwG;AACxG,uCAA0H;AAanH,KAAK,UAAU,aAAa,CAAC,KAAyB;IACzD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAElD,IAAI,IAAA,wBAAQ,EAAC,UAAU,CAAC,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IAED,MAAM,UAAU,GAAW,IAAA,mBAAU,GAAE,CAAC;IACxC,IAAA,iCAAiB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAwB;QAC/B,GAAG,IAAA,oBAAU,EAAC,WAAW,CAAC;QAC1B,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,WAAW,EAAE,UAAU;QACvB,MAAM;KACT,CAAC;IACF,MAAM,IAAA,sBAAY,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACvC,eAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,WAAW,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,WAAW,CAAC,KAAuB;IACrD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE1C,IAAI,CAAC,IAAA,wBAAQ,EAAC,UAAU,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAuB,IAAA,mCAAmB,EAAC,UAAU,CAAC,CAAC;IACvE,IAAA,mCAAmB,EAAC,UAAU,CAAC,CAAC;IAEhC,MAAM,GAAG,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAuB,IAAA,qCAA2B,EAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAErG,MAAM,KAAK,GAAsB;QAC7B,GAAG,IAAA,oBAAU,EAAC,WAAW,CAAC;QAC1B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,UAAW;QACxB,QAAQ;KACX,CAAC;IACF,MAAM,IAAA,sBAAY,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACvC,eAAM,CAAC,KAAK,CAAC,iBAAiB,UAAU,IAAI,EAAE,aAAa,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC;AAChB,CAAC"}
|