runpane 2.4.180 → 2.4.181
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/README.md +28 -1
- package/dist/agentTasks.d.ts.map +1 -1
- package/dist/agentTasks.js +8 -3
- package/dist/agentTasks.js.map +1 -1
- package/dist/boundaryDecoder.d.ts +32 -0
- package/dist/boundaryDecoder.d.ts.map +1 -1
- package/dist/boundaryDecoder.js +90 -6
- package/dist/boundaryDecoder.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +3 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +21 -0
- package/dist/commands.js.map +1 -1
- package/dist/docs-index.json +1 -1
- package/dist/generated/contract.d.ts +572 -57
- package/dist/generated/contract.d.ts.map +1 -1
- package/dist/generated/contract.js +953 -116
- package/dist/generated/contract.js.map +1 -1
- package/dist/handoff.d.ts.map +1 -1
- package/dist/handoff.js +96 -1
- package/dist/handoff.js.map +1 -1
- package/dist/localControl.d.ts +93 -1
- package/dist/localControl.d.ts.map +1 -1
- package/dist/localControl.js +275 -79
- package/dist/localControl.js.map +1 -1
- package/dist/mcpTools.d.ts.map +1 -1
- package/dist/mcpTools.js +3 -2
- package/dist/mcpTools.js.map +1 -1
- package/dist/sessionPayload.d.ts +77 -0
- package/dist/sessionPayload.d.ts.map +1 -0
- package/dist/sessionPayload.js +99 -0
- package/dist/sessionPayload.js.map +1 -0
- package/dist/watchLines.d.ts +1 -1
- package/dist/watchLines.d.ts.map +1 -1
- package/dist/watchLines.js +4 -1
- package/dist/watchLines.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { BoundarySchema, JsonValue } from './boundaryDecoder';
|
|
2
|
+
declare const sessionCreatePayloadSchema: BoundarySchema<{
|
|
3
|
+
readonly runtime: "wsl" | "windows" | undefined;
|
|
4
|
+
readonly wslDistribution: string | undefined;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly isPinned: boolean | undefined;
|
|
7
|
+
readonly agent: "codex" | "claude" | "cursor" | undefined;
|
|
8
|
+
readonly launchCommand: string | undefined;
|
|
9
|
+
readonly profile: string | undefined;
|
|
10
|
+
readonly goal: string | undefined;
|
|
11
|
+
readonly context: string | undefined;
|
|
12
|
+
readonly decisions: string[] | undefined;
|
|
13
|
+
readonly blockers: string[] | undefined;
|
|
14
|
+
readonly nextAction: string | undefined;
|
|
15
|
+
readonly evidence: {
|
|
16
|
+
readonly label: string;
|
|
17
|
+
readonly url: string;
|
|
18
|
+
readonly kind: "output" | "evidence" | "ticket" | "pull-request" | "other" | undefined;
|
|
19
|
+
readonly provenance: string | undefined;
|
|
20
|
+
readonly addedAt: string;
|
|
21
|
+
}[] | undefined;
|
|
22
|
+
readonly outputs: {
|
|
23
|
+
readonly label: string;
|
|
24
|
+
readonly url: string;
|
|
25
|
+
readonly kind: "output" | "evidence" | "ticket" | "pull-request" | "other" | undefined;
|
|
26
|
+
readonly provenance: string | undefined;
|
|
27
|
+
readonly addedAt: string;
|
|
28
|
+
}[] | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
declare const sessionUpdatePayloadSchema: BoundarySchema<{
|
|
31
|
+
readonly name: string | undefined;
|
|
32
|
+
readonly archived: boolean | undefined;
|
|
33
|
+
readonly isPinned: boolean | undefined;
|
|
34
|
+
readonly agent: "codex" | "claude" | "cursor" | undefined;
|
|
35
|
+
readonly launchCommand: string | undefined;
|
|
36
|
+
readonly profile: string | undefined;
|
|
37
|
+
readonly goal: string | undefined;
|
|
38
|
+
readonly context: string | undefined;
|
|
39
|
+
readonly decisions: string[] | undefined;
|
|
40
|
+
readonly blockers: string[] | undefined;
|
|
41
|
+
readonly nextAction: string | undefined;
|
|
42
|
+
readonly evidence: {
|
|
43
|
+
readonly label: string;
|
|
44
|
+
readonly url: string;
|
|
45
|
+
readonly kind: "output" | "evidence" | "ticket" | "pull-request" | "other" | undefined;
|
|
46
|
+
readonly provenance: string | undefined;
|
|
47
|
+
readonly addedAt: string;
|
|
48
|
+
}[] | undefined;
|
|
49
|
+
readonly outputs: {
|
|
50
|
+
readonly label: string;
|
|
51
|
+
readonly url: string;
|
|
52
|
+
readonly kind: "output" | "evidence" | "ticket" | "pull-request" | "other" | undefined;
|
|
53
|
+
readonly provenance: string | undefined;
|
|
54
|
+
readonly addedAt: string;
|
|
55
|
+
}[] | undefined;
|
|
56
|
+
readonly report: {
|
|
57
|
+
readonly summary: string;
|
|
58
|
+
readonly status: "reported" | "verified";
|
|
59
|
+
readonly evidence: {
|
|
60
|
+
readonly label: string;
|
|
61
|
+
readonly url: string;
|
|
62
|
+
readonly kind: "output" | "evidence" | "ticket" | "pull-request" | "other" | undefined;
|
|
63
|
+
readonly provenance: string | undefined;
|
|
64
|
+
readonly addedAt: string;
|
|
65
|
+
}[];
|
|
66
|
+
readonly reportedAt: string;
|
|
67
|
+
readonly provenance: string;
|
|
68
|
+
} | null | undefined;
|
|
69
|
+
readonly expectedRevision: number | undefined;
|
|
70
|
+
readonly source: "agent" | "user" | undefined;
|
|
71
|
+
}>;
|
|
72
|
+
export type SessionCreatePayload = ReturnType<typeof sessionCreatePayloadSchema.decode>;
|
|
73
|
+
export type SessionUpdatePayload = ReturnType<typeof sessionUpdatePayloadSchema.decode>;
|
|
74
|
+
export declare function parseSessionCreatePayload(value: JsonValue): SessionCreatePayload;
|
|
75
|
+
export declare function parseSessionUpdatePayload(value: JsonValue): SessionUpdatePayload;
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=sessionPayload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionPayload.d.ts","sourceRoot":"","sources":["../src/sessionPayload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAgDnE,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe9B,CAAC;AAEH,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB9B,CAAC;AAwBH,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACxF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAExF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB,CAEhF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,GAAG,oBAAoB,CAEhF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSessionCreatePayload = parseSessionCreatePayload;
|
|
4
|
+
exports.parseSessionUpdatePayload = parseSessionUpdatePayload;
|
|
5
|
+
const boundaryDecoder_1 = require("./boundaryDecoder");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
/**
|
|
8
|
+
* The Session create/update payload that people and agents write by hand for
|
|
9
|
+
* `runpane sessions create|update --from-json`. Every problem is reported at once, and the link
|
|
10
|
+
* URL scheme, dates and limits are checked before anything reaches Pane. The daemon applies the
|
|
11
|
+
* same rules (main/src/services/orchestrationSessionPayload.ts); keep the two in step.
|
|
12
|
+
*/
|
|
13
|
+
const MAX_ITEMS = 100;
|
|
14
|
+
const MAX_TEXT_LENGTH = 16_000;
|
|
15
|
+
const LINK_URL_PATTERN = /^(?:https?:\/\/|file:\/\/|grain:\/\/)/i;
|
|
16
|
+
function boundedText(schema) {
|
|
17
|
+
return boundaryDecoder_1.boundary.refine(schema, value => value.length <= MAX_TEXT_LENGTH, `expected at most ${MAX_TEXT_LENGTH} characters`);
|
|
18
|
+
}
|
|
19
|
+
function boundedArray(schema) {
|
|
20
|
+
return boundaryDecoder_1.boundary.refine(boundaryDecoder_1.boundary.array(schema), values => values.length <= MAX_ITEMS, `expected at most ${MAX_ITEMS} items`);
|
|
21
|
+
}
|
|
22
|
+
const isoDateSchema = boundaryDecoder_1.boundary.refine(boundaryDecoder_1.boundary.nonEmptyString, value => Number.isFinite(Date.parse(value)), 'expected an ISO 8601 date such as 2026-10-14T09:30:00Z');
|
|
23
|
+
const textSchema = boundedText(boundaryDecoder_1.boundary.string);
|
|
24
|
+
const textArraySchema = boundedArray(textSchema);
|
|
25
|
+
const linkSchema = boundaryDecoder_1.boundary.object({
|
|
26
|
+
label: boundedText(boundaryDecoder_1.boundary.nonEmptyString),
|
|
27
|
+
url: boundaryDecoder_1.boundary.refine(boundedText(boundaryDecoder_1.boundary.nonEmptyString), value => LINK_URL_PATTERN.test(value), 'expected a URL starting with https://, http://, file:// or grain://'),
|
|
28
|
+
kind: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.enumeration('evidence', 'output', 'ticket', 'pull-request', 'other')),
|
|
29
|
+
provenance: boundaryDecoder_1.boundary.optional(textSchema),
|
|
30
|
+
addedAt: isoDateSchema,
|
|
31
|
+
});
|
|
32
|
+
const linksSchema = boundedArray(linkSchema);
|
|
33
|
+
const reportSchema = boundaryDecoder_1.boundary.object({
|
|
34
|
+
summary: boundedText(boundaryDecoder_1.boundary.nonEmptyString),
|
|
35
|
+
status: boundaryDecoder_1.boundary.enumeration('reported', 'verified'),
|
|
36
|
+
evidence: boundaryDecoder_1.boundary.refine(linksSchema, links => links.length > 0, 'expected at least one link'),
|
|
37
|
+
reportedAt: isoDateSchema,
|
|
38
|
+
provenance: boundaryDecoder_1.boundary.nonEmptyString,
|
|
39
|
+
});
|
|
40
|
+
const agentSchema = boundaryDecoder_1.boundary.enumeration('codex', 'claude', 'cursor');
|
|
41
|
+
const sessionCreatePayloadSchema = boundaryDecoder_1.boundary.object({
|
|
42
|
+
runtime: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.enumeration('windows', 'wsl')),
|
|
43
|
+
wslDistribution: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.nonEmptyString),
|
|
44
|
+
name: boundaryDecoder_1.boundary.nonEmptyString,
|
|
45
|
+
isPinned: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.boolean),
|
|
46
|
+
agent: boundaryDecoder_1.boundary.optional(agentSchema),
|
|
47
|
+
launchCommand: boundaryDecoder_1.boundary.optional(textSchema),
|
|
48
|
+
profile: boundaryDecoder_1.boundary.optional(textSchema),
|
|
49
|
+
goal: boundaryDecoder_1.boundary.optional(textSchema),
|
|
50
|
+
context: boundaryDecoder_1.boundary.optional(textSchema),
|
|
51
|
+
decisions: boundaryDecoder_1.boundary.optional(textArraySchema),
|
|
52
|
+
blockers: boundaryDecoder_1.boundary.optional(textArraySchema),
|
|
53
|
+
nextAction: boundaryDecoder_1.boundary.optional(textSchema),
|
|
54
|
+
evidence: boundaryDecoder_1.boundary.optional(linksSchema),
|
|
55
|
+
outputs: boundaryDecoder_1.boundary.optional(linksSchema),
|
|
56
|
+
});
|
|
57
|
+
const sessionUpdatePayloadSchema = boundaryDecoder_1.boundary.object({
|
|
58
|
+
name: boundaryDecoder_1.boundary.optional(textSchema),
|
|
59
|
+
archived: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.boolean),
|
|
60
|
+
isPinned: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.boolean),
|
|
61
|
+
agent: boundaryDecoder_1.boundary.optional(agentSchema),
|
|
62
|
+
launchCommand: boundaryDecoder_1.boundary.optional(textSchema),
|
|
63
|
+
profile: boundaryDecoder_1.boundary.optional(textSchema),
|
|
64
|
+
goal: boundaryDecoder_1.boundary.optional(textSchema),
|
|
65
|
+
context: boundaryDecoder_1.boundary.optional(textSchema),
|
|
66
|
+
decisions: boundaryDecoder_1.boundary.optional(textArraySchema),
|
|
67
|
+
blockers: boundaryDecoder_1.boundary.optional(textArraySchema),
|
|
68
|
+
nextAction: boundaryDecoder_1.boundary.optional(textSchema),
|
|
69
|
+
evidence: boundaryDecoder_1.boundary.optional(linksSchema),
|
|
70
|
+
outputs: boundaryDecoder_1.boundary.optional(linksSchema),
|
|
71
|
+
report: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.nullable(reportSchema)),
|
|
72
|
+
expectedRevision: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.refine(boundaryDecoder_1.boundary.number, value => Number.isInteger(value) && value >= 0, 'expected a non-negative integer')),
|
|
73
|
+
source: boundaryDecoder_1.boundary.optional(boundaryDecoder_1.boundary.enumeration('user', 'agent')),
|
|
74
|
+
});
|
|
75
|
+
const SESSION_PAYLOAD_GUIDE = 'outputs and evidence items are {"label": string, '
|
|
76
|
+
+ '"url": https/http/file/grain URL, "addedAt": ISO 8601 date, "kind"?: evidence|output|ticket|pull-request|other, '
|
|
77
|
+
+ '"provenance"?: string}; decisions and blockers are arrays of strings; report is {"summary", '
|
|
78
|
+
+ '"status": reported|verified, "evidence": [at least one item], "reportedAt": ISO 8601 date, "provenance"}; '
|
|
79
|
+
+ `at most ${MAX_ITEMS} items per array and ${MAX_TEXT_LENGTH} characters per text; `
|
|
80
|
+
+ 'arrays replace the stored value';
|
|
81
|
+
function decodeSessionPayload(value, schema, action) {
|
|
82
|
+
try {
|
|
83
|
+
return (0, boundaryDecoder_1.decodeBoundaryAll)(value, schema);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (!(error instanceof boundaryDecoder_1.BoundaryDecodeIssues))
|
|
87
|
+
throw error;
|
|
88
|
+
const count = error.issues.length === 1 ? '1 problem' : `${error.issues.length} problems`;
|
|
89
|
+
throw new errors_1.RunpaneError('ERR_SESSION_PAYLOAD_INVALID', `The Session ${action} payload has ${count}: ${error.message}. Nothing was changed.`, `Fix every field listed and send the payload again: ${SESSION_PAYLOAD_GUIDE}. `
|
|
90
|
+
+ `Full shape and an example: runpane agent-context --command "sessions ${action}".`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function parseSessionCreatePayload(value) {
|
|
94
|
+
return decodeSessionPayload(value, sessionCreatePayloadSchema, 'create');
|
|
95
|
+
}
|
|
96
|
+
function parseSessionUpdatePayload(value) {
|
|
97
|
+
return decodeSessionPayload(value, sessionUpdatePayloadSchema, 'update');
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=sessionPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionPayload.js","sourceRoot":"","sources":["../src/sessionPayload.ts"],"names":[],"mappings":"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"}
|
package/dist/watchLines.d.ts
CHANGED
|
@@ -44,6 +44,6 @@ export interface WatchResult {
|
|
|
44
44
|
*/
|
|
45
45
|
export declare function describeReport(report: WatchReport): string;
|
|
46
46
|
export declare function formatWaitResult(result: WatchResult, format: WatchFormat): string[];
|
|
47
|
-
export declare function formatNonEntry(kind: '_ok' | '_heartbeat' | '_error' | '_reconnected', fields: Record<string, string | number | undefined>, format: WatchFormat): string;
|
|
47
|
+
export declare function formatNonEntry(kind: '_ok' | '_heartbeat' | '_error' | '_reconnected' | '_timeout', fields: Record<string, string | number | undefined>, format: WatchFormat): string;
|
|
48
48
|
export {};
|
|
49
49
|
//# sourceMappingURL=watchLines.d.ts.map
|
package/dist/watchLines.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchLines.d.ts","sourceRoot":"","sources":["../src/watchLines.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,yDAAyD;AACzD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"watchLines.d.ts","sourceRoot":"","sources":["../src/watchLines.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,yDAAyD;AACzD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAgDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQ1D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAsBnF;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,UAAU,EACnE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EACnD,MAAM,EAAE,WAAW,GAClB,MAAM,CAOR"}
|
package/dist/watchLines.js
CHANGED
|
@@ -24,7 +24,7 @@ function formatEntryLine(entry) {
|
|
|
24
24
|
const name = sanitizeName(entry.paneName);
|
|
25
25
|
const pane = `pane ${sanitizeName(entry.paneId)}`;
|
|
26
26
|
const panel = entry.panelId ? ` panel ${sanitizeName(entry.panelId)}` : '';
|
|
27
|
-
if (entry.changedWhileAway)
|
|
27
|
+
if (entry.changedWhileAway && entry.kind !== 'panel.stopped')
|
|
28
28
|
return `CHANGED ${name} ${pane}${panel}`;
|
|
29
29
|
switch (entry.kind) {
|
|
30
30
|
case 'agent.ready': return `READY ${name} ${pane}${panel}`;
|
|
@@ -39,6 +39,7 @@ function formatEntryLine(entry) {
|
|
|
39
39
|
case 'pane.gone': return `GONE ${name} ${pane}`;
|
|
40
40
|
case 'pane.associated': return `JOINED ${name} ${pane} session ${sanitizeName(entry.sessionId ?? '')}`;
|
|
41
41
|
case 'pane.detached': return `LEFT ${name} ${pane} session ${sanitizeName(entry.sessionId ?? '')}`;
|
|
42
|
+
case 'panel.stopped': return `STOPPED ${name} ${pane}${panel}`;
|
|
42
43
|
case 'panel.exited': return `EXIT ${name} ${pane}${panel} code ${entry.exitCode ?? 'unknown'}`;
|
|
43
44
|
case 'pr.conflicted': return `PR ${name} ${pane} #${entry.pr?.number ?? '?'} CONFLICTED`;
|
|
44
45
|
case 'pr.checks': return formatChecksLine(`PR ${name} ${pane} #${entry.pr?.number ?? '?'}`, entry);
|
|
@@ -105,6 +106,8 @@ function formatNonEntry(kind, fields, format) {
|
|
|
105
106
|
return `HEARTBEAT gen ${fields.generation} at ${fields.at}`;
|
|
106
107
|
if (kind === '_reconnected')
|
|
107
108
|
return `WATCH RECONNECTED gen ${fields.generation}`;
|
|
109
|
+
if (kind === '_timeout')
|
|
110
|
+
return `WATCH TIMEOUT after ${fields.timeoutMs}ms`;
|
|
108
111
|
return `WATCH ERROR ${sanitizeName(String(fields.code))}: ${sanitizeName(String(fields.message))}`;
|
|
109
112
|
}
|
|
110
113
|
//# sourceMappingURL=watchLines.js.map
|
package/dist/watchLines.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchLines.js","sourceRoot":"","sources":["../src/watchLines.ts"],"names":[],"mappings":";;AAEA,8DAGC;
|
|
1
|
+
{"version":3,"file":"watchLines.js","sourceRoot":"","sources":["../src/watchLines.ts"],"names":[],"mappings":"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"}
|