@plurnk/plurnk-service 0.2.0 → 0.4.0
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/SPEC.md +98 -112
- package/dist/core/ChannelWrite.d.ts +10 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/Engine.d.ts +10 -2
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +410 -113
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/ProviderRegistry.d.ts +1 -1
- package/dist/core/ProviderRegistry.d.ts.map +1 -1
- package/dist/core/ProviderRegistry.js.map +1 -1
- package/dist/core/line-marker.d.ts +23 -0
- package/dist/core/line-marker.d.ts.map +1 -0
- package/dist/core/line-marker.js +321 -0
- package/dist/core/line-marker.js.map +1 -0
- package/dist/core/matcher.d.ts +14 -0
- package/dist/core/matcher.d.ts.map +1 -0
- package/dist/core/matcher.js +195 -0
- package/dist/core/matcher.js.map +1 -0
- package/dist/core/mimetype-binary.d.ts +6 -0
- package/dist/core/mimetype-binary.d.ts.map +1 -0
- package/dist/core/mimetype-binary.js +82 -0
- package/dist/core/mimetype-binary.js.map +1 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +174 -33
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/path-mimetype.d.ts +3 -0
- package/dist/core/path-mimetype.d.ts.map +1 -0
- package/dist/core/path-mimetype.js +47 -0
- package/dist/core/path-mimetype.js.map +1 -0
- package/dist/core/scheme-types.d.ts +5 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/providers/Mock.d.ts +2 -2
- package/dist/providers/Mock.d.ts.map +1 -1
- package/dist/providers/Mock.js.map +1 -1
- package/dist/schemes/Exec.d.ts +30 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +229 -6
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts +8 -4
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +184 -68
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Known.js +1 -1
- package/dist/schemes/Known.js.map +1 -1
- package/dist/schemes/Log.d.ts +9 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +120 -19
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Plurnk.d.ts +15 -1
- package/dist/schemes/Plurnk.d.ts.map +1 -1
- package/dist/schemes/Plurnk.js +50 -8
- package/dist/schemes/Plurnk.js.map +1 -1
- package/dist/schemes/Skill.js +1 -1
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Unknown.js +1 -1
- package/dist/schemes/Unknown.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +5 -3
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +1 -0
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +64 -15
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +3 -0
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +269 -72
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +14 -7
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/server/ClientConnection.d.ts +3 -2
- package/dist/server/ClientConnection.d.ts.map +1 -1
- package/dist/server/ClientConnection.js +10 -2
- package/dist/server/ClientConnection.js.map +1 -1
- package/dist/server/Daemon.d.ts +40 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +319 -1
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/MethodRegistry.d.ts +29 -0
- package/dist/server/MethodRegistry.d.ts.map +1 -1
- package/dist/server/MethodRegistry.js.map +1 -1
- package/dist/server/dsl.d.ts +2 -2
- package/dist/server/dsl.d.ts.map +1 -1
- package/dist/server/dsl.js +10 -10
- package/dist/server/dsl.js.map +1 -1
- package/dist/server/envelope.d.ts +2 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +11 -8
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/logEntry.d.ts +9 -9
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +10 -10
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/methods/_dispatchAsClient.d.ts.map +1 -1
- package/dist/server/methods/_dispatchAsClient.js +7 -2
- package/dist/server/methods/_dispatchAsClient.js.map +1 -1
- package/dist/server/methods/entry_read.js +5 -5
- package/dist/server/methods/entry_read.js.map +1 -1
- package/dist/server/methods/loop_cancel.d.ts +3 -0
- package/dist/server/methods/loop_cancel.d.ts.map +1 -0
- package/dist/server/methods/loop_cancel.js +27 -0
- package/dist/server/methods/loop_cancel.js.map +1 -0
- package/dist/server/methods/loop_run.d.ts.map +1 -1
- package/dist/server/methods/loop_run.js +53 -49
- package/dist/server/methods/loop_run.js.map +1 -1
- package/dist/server/methods/op_edit.js +3 -3
- package/dist/server/methods/op_edit.js.map +1 -1
- package/dist/server/methods/op_hide.js +3 -3
- package/dist/server/methods/op_hide.js.map +1 -1
- package/dist/server/methods/op_read.js +3 -3
- package/dist/server/methods/op_read.js.map +1 -1
- package/dist/server/methods/op_show.js +3 -3
- package/dist/server/methods/op_show.js.map +1 -1
- package/migrations/001_schema.sql +324 -0
- package/package.json +19 -12
- package/migrations/001_sessions.sql +0 -11
- package/migrations/002_runs.sql +0 -16
- package/migrations/003_loops.sql +0 -12
- package/migrations/004_turns.sql +0 -18
- package/migrations/005_entries.sql +0 -44
- package/migrations/006_log_entries.sql +0 -51
- package/migrations/007_visibility.sql +0 -10
- package/migrations/008_schemes_providers.sql +0 -25
- package/migrations/009_cost_rollups.sql +0 -44
- package/migrations/010_subscriptions.sql +0 -36
- package/migrations/011_turn_call_metadata.sql +0 -7
- package/migrations/012_proposal_lifecycle.sql +0 -22
- package/migrations/013_log_entries_lifecycle_columns.sql +0 -22
- package/migrations/014_loop_flags.sql +0 -9
- package/migrations/015_sessions_project_root.sql +0 -6
- package/migrations/016_persona_columns.sql +0 -11
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Path-extension mimetype resolver for entry schemes per plurnk-grammar
|
|
2
|
+
// 0.14.0 §Paths: "Path suffix (`.json`, `.md`, `.txt`, etc.) declares
|
|
3
|
+
// mimetype; absent suffix defers to scheme default."
|
|
4
|
+
//
|
|
5
|
+
// Plurnk-service implements this uniformly across entry schemes: a
|
|
6
|
+
// pathname's extension drives the effective mimetype (via the sibling
|
|
7
|
+
// Mimetypes detect service), and the scheme manifest's channel default
|
|
8
|
+
// is the fallback when no extension is present.
|
|
9
|
+
//
|
|
10
|
+
// This makes structural ops (`<L>` item-index, matcher dialect dispatch)
|
|
11
|
+
// fire correctly without content-sniffing: a model writing JSON to
|
|
12
|
+
// `known://users.json` opts into JSON treatment via the `.json` suffix,
|
|
13
|
+
// while `known://notes` (no suffix) stays at Known's default of
|
|
14
|
+
// `text/markdown`.
|
|
15
|
+
//
|
|
16
|
+
// Consistent across:
|
|
17
|
+
// - known://users.json → application/json
|
|
18
|
+
// - known://notes.md → text/markdown
|
|
19
|
+
// - known://config.yaml → application/yaml
|
|
20
|
+
// - known://users → scheme default (text/markdown for Known)
|
|
21
|
+
import { normalizeAutoTextMimetype } from "./mimetype-binary.js";
|
|
22
|
+
// Extract the suffix (everything after the last dot in the last segment)
|
|
23
|
+
// from a pathname. Empty if no dot in the last segment.
|
|
24
|
+
const extractExtension = (pathname) => {
|
|
25
|
+
const lastSlash = pathname.lastIndexOf("/");
|
|
26
|
+
const lastSegment = lastSlash === -1 ? pathname : pathname.slice(lastSlash + 1);
|
|
27
|
+
const lastDot = lastSegment.lastIndexOf(".");
|
|
28
|
+
if (lastDot <= 0)
|
|
29
|
+
return ""; // leading-dot files (".env") aren't an extension
|
|
30
|
+
return lastSegment.slice(lastDot); // includes the leading "."
|
|
31
|
+
};
|
|
32
|
+
// Resolve a pathname → effective mimetype.
|
|
33
|
+
// 1. If the pathname has an extension, query Mimetypes.detect({ ext })
|
|
34
|
+
// and use what comes back (normalized via the text-primitive rule —
|
|
35
|
+
// text/plain → text/markdown).
|
|
36
|
+
// 2. Otherwise (no extension or no Mimetypes service), fall back to
|
|
37
|
+
// `schemeDefault` (typically the scheme manifest's channel default).
|
|
38
|
+
export const resolveEntryMimetype = async (pathname, schemeDefault, mimetypes) => {
|
|
39
|
+
const ext = extractExtension(pathname);
|
|
40
|
+
if (ext.length > 0 && mimetypes !== undefined) {
|
|
41
|
+
const detected = await mimetypes.detect({ ext });
|
|
42
|
+
if (detected !== null)
|
|
43
|
+
return normalizeAutoTextMimetype(detected);
|
|
44
|
+
}
|
|
45
|
+
return schemeDefault;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=path-mimetype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-mimetype.js","sourceRoot":"","sources":["../../src/core/path-mimetype.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,sEAAsE;AACtE,qDAAqD;AACrD,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,uEAAuE;AACvE,gDAAgD;AAChD,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,wEAAwE;AACxE,gEAAgE;AAChE,mBAAmB;AACnB,EAAE;AACF,qBAAqB;AACrB,gDAAgD;AAChD,6CAA6C;AAC7C,gDAAgD;AAChD,wEAAwE;AAGxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,yEAAyE;AACzE,wDAAwD;AACxD,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,CAAE,iDAAiD;IAC/E,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,2BAA2B;AACnE,CAAC,CAAC;AAEF,2CAA2C;AAC3C,uEAAuE;AACvE,uEAAuE;AACvE,kCAAkC;AAClC,oEAAoE;AACpE,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACrC,QAAgB,EAChB,aAAqB,EACrB,SAAgC,EACjB,EAAE;IACjB,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Db } from "./Db.ts";
|
|
2
|
+
import type { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
3
|
+
import type { StreamEventNotify, WakeRunNotify } from "./ChannelWrite.ts";
|
|
2
4
|
export type WriterTier = "model" | "client" | "system" | "plugin";
|
|
3
5
|
export interface PlurnkSchemeContext {
|
|
4
6
|
readonly db: Db;
|
|
@@ -8,6 +10,9 @@ export interface PlurnkSchemeContext {
|
|
|
8
10
|
readonly turnId: number;
|
|
9
11
|
readonly writer: WriterTier;
|
|
10
12
|
readonly signal: AbortSignal | undefined;
|
|
13
|
+
readonly streamEventNotify?: StreamEventNotify;
|
|
14
|
+
readonly wakeRunNotify?: WakeRunNotify;
|
|
15
|
+
readonly mimetypes?: Mimetypes;
|
|
11
16
|
}
|
|
12
17
|
export interface SchemeFlagAffinity {
|
|
13
18
|
readonly excludedInAsk?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-types.d.ts","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"scheme-types.d.ts","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAOlE,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAKzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAK/C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IAIvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAMhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheme-types.js","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAAA,iEAAiE;
|
|
1
|
+
{"version":3,"file":"scheme-types.js","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAgEjE,MAAM,CAAC,MAAM,kBAAkB,GAAc;IACzC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;CACrB,CAAC"}
|
package/dist/providers/Mock.d.ts
CHANGED
|
@@ -23,10 +23,10 @@ declare const DEFAULT_USAGE: ProviderUsage;
|
|
|
23
23
|
export default class Mock implements Provider {
|
|
24
24
|
#private;
|
|
25
25
|
constructor({ contextSize, responses }: {
|
|
26
|
-
contextSize: number;
|
|
26
|
+
contextSize: number | null;
|
|
27
27
|
responses: MockResponse[];
|
|
28
28
|
});
|
|
29
|
-
get contextSize(): number;
|
|
29
|
+
get contextSize(): number | null;
|
|
30
30
|
get model(): string;
|
|
31
31
|
countTokens(text: string): number;
|
|
32
32
|
costFor(_usage: ProviderUsage): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mock.d.ts","sourceRoot":"","sources":["../../src/providers/Mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrF,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,SAAS,EAAE,aAAa,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IAAE,GAAG,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAEpF,QAAA,MAAM,aAAa,EAAE,aAAiE,CAAC;AAEvF,MAAM,CAAC,OAAO,OAAO,IAAK,YAAW,QAAQ;;gBAI7B,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,EAAE,CAAA;KAAE;
|
|
1
|
+
{"version":3,"file":"Mock.d.ts","sourceRoot":"","sources":["../../src/providers/Mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrF,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,SAAS,EAAE,aAAa,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IAAE,GAAG,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAEpF,QAAA,MAAM,aAAa,EAAE,aAAiE,CAAC;AAEvF,MAAM,CAAC,OAAO,OAAO,IAAK,YAAW,QAAQ;;gBAI7B,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,YAAY,EAAE,CAAA;KAAE;IAKjG,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAA8B;IAC9D,IAAI,KAAK,IAAI,MAAM,CAAmB;IAItC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKjC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAEhC,QAAQ,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,qBAAqB,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAe1I,IAAI,SAAS,IAAI,MAAM,CAA+B;CACzD;AAED,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mock.js","sourceRoot":"","sources":["../../src/providers/Mock.ts"],"names":[],"mappings":"AA0BA,MAAM,aAAa,GAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAEvF,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,YAAY,
|
|
1
|
+
{"version":3,"file":"Mock.js","sourceRoot":"","sources":["../../src/providers/Mock.ts"],"names":[],"mappings":"AA0BA,MAAM,aAAa,GAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAEvF,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,YAAY,CAAgB;IAC5B,MAAM,CAAiB;IAEvB,YAAY,EAAE,WAAW,EAAE,SAAS,EAA6D;QAC7F,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,WAAW,KAAoB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IAEtC,sEAAsE;IACtE,8BAA8B;IAC9B,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,gBAAgB;IAChB,OAAO,CAAC,MAAqB,IAAY,OAAO,CAAC,CAAC,CAAC,CAAC;IAEpD,KAAK,CAAC,QAAQ,CAAC,CAAoD;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC7F,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,MAAM,SAAS,GAA0B;YACrC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,aAAa;YAC/B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,MAAM;YACtC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM;YACxB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,SAAS,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;CACzD;AAED,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,CAAC"}
|
package/dist/schemes/Exec.d.ts
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ExecStatement, FindStatement, HideStatement, ReadStatement, ShowStatement } from "@plurnk/plurnk-grammar";
|
|
2
|
+
import type { SchemeManifest, PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
3
|
+
import type { ReadResult, ShowHideResult } from "./_entry-ops.ts";
|
|
4
|
+
import type { EntryData, ReadEntryResult, WriteEntryResult, DeleteEntryResult } from "./_entry-crud.ts";
|
|
5
|
+
import type { FindResult } from "./_entry-find.ts";
|
|
6
|
+
type ExecResult = {
|
|
7
|
+
status: number;
|
|
8
|
+
body?: string;
|
|
9
|
+
attrs?: object;
|
|
10
|
+
error?: string;
|
|
11
|
+
};
|
|
2
12
|
export default class Exec {
|
|
13
|
+
#private;
|
|
3
14
|
static manifest: SchemeManifest;
|
|
15
|
+
idle(): Promise<void>;
|
|
16
|
+
exec(statement: ExecStatement, ctx: PlurnkSchemeContext): Promise<ExecResult>;
|
|
17
|
+
applyResolution(args: {
|
|
18
|
+
attrs: object;
|
|
19
|
+
body?: string;
|
|
20
|
+
}, ctx: PlurnkSchemeContext): Promise<{
|
|
21
|
+
status: number;
|
|
22
|
+
outcome?: string;
|
|
23
|
+
body?: string;
|
|
24
|
+
}>;
|
|
25
|
+
read(statement: ReadStatement, ctx: PlurnkSchemeContext): Promise<ReadResult>;
|
|
26
|
+
show(statement: ShowStatement | HideStatement, ctx: PlurnkSchemeContext): Promise<ShowHideResult>;
|
|
27
|
+
hide(statement: ShowStatement | HideStatement, ctx: PlurnkSchemeContext): Promise<ShowHideResult>;
|
|
28
|
+
find(statement: FindStatement, ctx: PlurnkSchemeContext): Promise<FindResult>;
|
|
29
|
+
readEntry(pathname: string, ctx: PlurnkSchemeContext): Promise<ReadEntryResult>;
|
|
30
|
+
writeEntry(pathname: string, entry: EntryData, ctx: PlurnkSchemeContext): Promise<WriteEntryResult>;
|
|
31
|
+
deleteEntry(pathname: string, ctx: PlurnkSchemeContext): Promise<DeleteEntryResult>;
|
|
4
32
|
}
|
|
33
|
+
export {};
|
|
5
34
|
//# sourceMappingURL=Exec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Exec.d.ts","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Exec.d.ts","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAExH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAsFpF,MAAM,CAAC,OAAO,OAAO,IAAI;;IACrB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAa7B;IAKI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqC7E,eAAe,CACjB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACtC,GAAG,EAAE,mBAAmB,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkGzD,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjG,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI/E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAG5F"}
|
package/dist/schemes/Exec.js
CHANGED
|
@@ -1,10 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { readSessionEntry, showSessionEntry, hideSessionEntry } from "./_entry-ops.js";
|
|
3
|
+
import { readEntry, writeEntry, deleteEntry } from "./_entry-crud.js";
|
|
4
|
+
import { findSessionEntries } from "./_entry-find.js";
|
|
5
|
+
import { appendToChannel, setChannelState, openSubscription, closeSubscription, } from "../core/ChannelWrite.js";
|
|
6
|
+
// Per plurnk.md, EXEC's target slot is `cwd`. ParsedPath there means a
|
|
7
|
+
// bare local path or file:// URL — both decode to a filesystem directory.
|
|
8
|
+
// Anything else is rejected at proposal time.
|
|
9
|
+
const cwdFromTarget = (target) => {
|
|
10
|
+
if (target === null)
|
|
11
|
+
return null;
|
|
12
|
+
if (target.kind === "local")
|
|
13
|
+
return target.raw;
|
|
14
|
+
if (target.kind === "url" && (target.scheme === null || target.scheme === "file")) {
|
|
15
|
+
return target.pathname;
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
19
|
+
const runtimeToSpawnArgs = (runtime, command) => {
|
|
20
|
+
// plurnk.md: "EXEC may include an optional runtime tag ("sh", "node", etc.)."
|
|
21
|
+
// Map common runtimes to their invocation. Default = shell.
|
|
22
|
+
if (runtime === "" || runtime === "sh" || runtime === "bash") {
|
|
23
|
+
return { cmd: command, args: [], useShell: true };
|
|
24
|
+
}
|
|
25
|
+
if (runtime === "node")
|
|
26
|
+
return { cmd: "node", args: ["-e", command], useShell: false };
|
|
27
|
+
if (runtime === "python" || runtime === "python3")
|
|
28
|
+
return { cmd: "python3", args: ["-c", command], useShell: false };
|
|
29
|
+
// Unknown runtime: fall through to shell with the runtime as the first arg
|
|
30
|
+
// (treat as `<runtime> -c <command>` style). Conservative.
|
|
31
|
+
return { cmd: runtime, args: ["-c", command], useShell: false };
|
|
32
|
+
};
|
|
33
|
+
const streamShellCommand = async (runtime, command, cwd, db, streamEventNotify, entryId, signal) => {
|
|
34
|
+
const { cmd, args, useShell } = runtimeToSpawnArgs(runtime, command);
|
|
35
|
+
return new Promise((resolvePromise, rejectPromise) => {
|
|
36
|
+
const child = spawn(cmd, args, {
|
|
37
|
+
shell: useShell,
|
|
38
|
+
signal,
|
|
39
|
+
cwd: cwd ?? undefined,
|
|
40
|
+
});
|
|
41
|
+
const pending = [];
|
|
42
|
+
child.stdout.on("data", (chunk) => {
|
|
43
|
+
pending.push(appendToChannel(db, {
|
|
44
|
+
entryId, channel: "stdout", chunk: chunk.toString("utf8"), notify: streamEventNotify,
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
child.stderr.on("data", (chunk) => {
|
|
48
|
+
pending.push(appendToChannel(db, {
|
|
49
|
+
entryId, channel: "stderr", chunk: chunk.toString("utf8"), notify: streamEventNotify,
|
|
50
|
+
}));
|
|
51
|
+
});
|
|
52
|
+
child.on("error", (err) => {
|
|
53
|
+
if (err.code === "ABORT_ERR") {
|
|
54
|
+
Promise.all(pending).then(() => {
|
|
55
|
+
resolvePromise({ exitCode: -1, aborted: true });
|
|
56
|
+
}).catch(rejectPromise);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
rejectPromise(err);
|
|
60
|
+
});
|
|
61
|
+
child.on("close", (code, killedBySignal) => {
|
|
62
|
+
Promise.all(pending).then(() => {
|
|
63
|
+
resolvePromise({
|
|
64
|
+
exitCode: code ?? -1,
|
|
65
|
+
aborted: killedBySignal !== null,
|
|
66
|
+
});
|
|
67
|
+
}).catch(rejectPromise);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
4
71
|
export default class Exec {
|
|
5
72
|
static manifest = {
|
|
6
73
|
name: "exec",
|
|
7
|
-
channels: {},
|
|
74
|
+
channels: { stdout: "text/plain", stderr: "text/plain" },
|
|
8
75
|
defaultChannel: "stdout",
|
|
9
76
|
category: "data",
|
|
10
77
|
scope: "session",
|
|
@@ -12,9 +79,165 @@ export default class Exec {
|
|
|
12
79
|
volatile: true,
|
|
13
80
|
modelVisible: true,
|
|
14
81
|
flags: {
|
|
15
|
-
excludedInAsk: true,
|
|
16
|
-
proposes: true,
|
|
82
|
+
excludedInAsk: true,
|
|
83
|
+
proposes: true,
|
|
17
84
|
},
|
|
18
85
|
};
|
|
86
|
+
#activeAborts = new Map();
|
|
87
|
+
#activeSpawns = new Map();
|
|
88
|
+
async idle() {
|
|
89
|
+
await Promise.allSettled([...this.#activeSpawns.values()]);
|
|
90
|
+
}
|
|
91
|
+
// EXEC op handler — the actual model-facing entry point per plurnk.md.
|
|
92
|
+
// `<<EXEC[runtime](cwd):command:EXEC` →
|
|
93
|
+
// signal=runtime, target=cwd (ParsedPath local/file or null), body=command.
|
|
94
|
+
//
|
|
95
|
+
// Proposes (status=202) with attrs={runtime, cwd, command, pathname}.
|
|
96
|
+
// applyResolution spawns the subprocess; output streams into the
|
|
97
|
+
// auto-generated exec://<pathname> entry's stdout/stderr channels.
|
|
98
|
+
// The model READs that entry on a subsequent turn to see what happened.
|
|
99
|
+
async exec(statement, ctx) {
|
|
100
|
+
const command = statement.body ?? "";
|
|
101
|
+
if (command.length === 0) {
|
|
102
|
+
return { status: 400, error: "EXEC requires a command body" };
|
|
103
|
+
}
|
|
104
|
+
if (statement.target !== null) {
|
|
105
|
+
if (statement.target.kind === "url" && statement.target.scheme !== null && statement.target.scheme !== "file") {
|
|
106
|
+
return { status: 400, error: `EXEC cwd must be a local path or file:// URL; got ${statement.target.scheme}://` };
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const runtime = typeof statement.signal === "string" ? statement.signal : "";
|
|
110
|
+
const KNOWN_RUNTIMES = new Set(["", "sh", "bash", "node", "python", "python3"]);
|
|
111
|
+
if (!KNOWN_RUNTIMES.has(runtime)) {
|
|
112
|
+
return { status: 501, error: `\`${runtime}\` executable not configured.` };
|
|
113
|
+
}
|
|
114
|
+
const cwdFromOp = cwdFromTarget(statement.target);
|
|
115
|
+
// Default cwd to the session's project_root so EXEC runs in the
|
|
116
|
+
// same directory File scheme writes to. Without this default, the
|
|
117
|
+
// model creates a file via EDIT (lands in project_root) and then
|
|
118
|
+
// EXECs (runs in daemon cwd) and can't find what it just wrote.
|
|
119
|
+
// Explicit (cwd) in the EXEC statement still wins.
|
|
120
|
+
let cwd = cwdFromOp;
|
|
121
|
+
if (cwd === null) {
|
|
122
|
+
const sessionRow = await ctx.db.envelope_get_session.get({ id: ctx.sessionId });
|
|
123
|
+
cwd = sessionRow?.project_root ?? null;
|
|
124
|
+
}
|
|
125
|
+
// Auto-generated pathname so the model can READ exec://<pathname> later.
|
|
126
|
+
// Short random suffix keeps it readable while remaining unique within a session.
|
|
127
|
+
const pathname = `r-${crypto.randomUUID().slice(0, 8)}`;
|
|
128
|
+
const attrs = { runtime, cwd, command, pathname };
|
|
129
|
+
// Body shown to client during proposal review — `$ command` is the
|
|
130
|
+
// most-readable summary regardless of runtime.
|
|
131
|
+
const preview = runtime !== "" ? `[${runtime}] ${command}` : `$ ${command}`;
|
|
132
|
+
return { status: 202, body: preview, attrs };
|
|
133
|
+
}
|
|
134
|
+
async applyResolution(args, ctx) {
|
|
135
|
+
const attrs = args.attrs;
|
|
136
|
+
const command = attrs.command;
|
|
137
|
+
const pathname = attrs.pathname;
|
|
138
|
+
const runtime = typeof attrs.runtime === "string" ? attrs.runtime : "";
|
|
139
|
+
const cwd = (typeof attrs.cwd === "string" && attrs.cwd.length > 0) ? attrs.cwd : null;
|
|
140
|
+
if (typeof command !== "string" || command.length === 0) {
|
|
141
|
+
return { status: 500, outcome: "missing_command" };
|
|
142
|
+
}
|
|
143
|
+
if (typeof pathname !== "string" || pathname.length === 0) {
|
|
144
|
+
return { status: 500, outcome: "missing_pathname" };
|
|
145
|
+
}
|
|
146
|
+
const seed = {
|
|
147
|
+
channels: {
|
|
148
|
+
stdout: { content: "", mimetype: "text/plain", state: "active" },
|
|
149
|
+
stderr: { content: "", mimetype: "text/plain", state: "active" },
|
|
150
|
+
},
|
|
151
|
+
tags: [],
|
|
152
|
+
};
|
|
153
|
+
const { entryId } = await writeEntry(pathname, seed, ctx, "exec");
|
|
154
|
+
if (entryId === null)
|
|
155
|
+
return { status: 500, outcome: "entry_write_failed" };
|
|
156
|
+
const subscriptionId = await openSubscription(ctx.db, {
|
|
157
|
+
runId: ctx.runId, entryId, scheme: "exec",
|
|
158
|
+
handle: runtime !== "" ? `${runtime}: ${command}` : command,
|
|
159
|
+
});
|
|
160
|
+
const controller = new AbortController();
|
|
161
|
+
if (ctx.signal !== undefined) {
|
|
162
|
+
if (ctx.signal.aborted)
|
|
163
|
+
controller.abort(ctx.signal.reason);
|
|
164
|
+
else
|
|
165
|
+
ctx.signal.addEventListener("abort", () => controller.abort(ctx.signal.reason), { once: true });
|
|
166
|
+
}
|
|
167
|
+
this.#activeAborts.set(subscriptionId, controller);
|
|
168
|
+
const tail = this.#runSpawn({
|
|
169
|
+
runtime, command, cwd, db: ctx.db,
|
|
170
|
+
streamEventNotify: ctx.streamEventNotify,
|
|
171
|
+
wakeRunNotify: ctx.wakeRunNotify,
|
|
172
|
+
sessionId: ctx.sessionId, runId: ctx.runId, pathname,
|
|
173
|
+
entryId, subscriptionId, signal: controller.signal,
|
|
174
|
+
});
|
|
175
|
+
this.#activeSpawns.set(subscriptionId, tail);
|
|
176
|
+
return { status: 200, outcome: "started" };
|
|
177
|
+
}
|
|
178
|
+
async #runSpawn(opts) {
|
|
179
|
+
const { runtime, command, cwd, db, streamEventNotify, wakeRunNotify, sessionId, runId, pathname, entryId, subscriptionId, signal } = opts;
|
|
180
|
+
let closeStatus = 500;
|
|
181
|
+
let exitLabel = "spawn_failed";
|
|
182
|
+
let stdoutLength = 0;
|
|
183
|
+
let stderrLength = 0;
|
|
184
|
+
try {
|
|
185
|
+
let outcome;
|
|
186
|
+
try {
|
|
187
|
+
outcome = await streamShellCommand(runtime, command, cwd, db, streamEventNotify, entryId, signal);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
await setChannelState(db, { entryId, channel: "stdout", state: "errored", notify: streamEventNotify });
|
|
191
|
+
await setChannelState(db, { entryId, channel: "stderr", state: "errored", notify: streamEventNotify });
|
|
192
|
+
await closeSubscription(db, { subscriptionId, status: 500 });
|
|
193
|
+
console.error("exec spawn_failed:", err instanceof Error ? err.message : String(err));
|
|
194
|
+
closeStatus = 500;
|
|
195
|
+
exitLabel = "spawn_failed";
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
closeStatus = outcome.aborted ? 499 : outcome.exitCode === 0 ? 200 : 500;
|
|
199
|
+
exitLabel = outcome.aborted ? "aborted" : `exit ${outcome.exitCode}`;
|
|
200
|
+
const terminalState = outcome.exitCode === 0 && !outcome.aborted ? "closed" : "errored";
|
|
201
|
+
await setChannelState(db, { entryId, channel: "stdout", state: terminalState, notify: streamEventNotify });
|
|
202
|
+
await setChannelState(db, { entryId, channel: "stderr", state: terminalState, notify: streamEventNotify });
|
|
203
|
+
await closeSubscription(db, { subscriptionId, status: closeStatus });
|
|
204
|
+
const stdoutMeta = await db.channel_meta.get({ entry_id: entryId, channel: "stdout" });
|
|
205
|
+
const stderrMeta = await db.channel_meta.get({ entry_id: entryId, channel: "stderr" });
|
|
206
|
+
stdoutLength = stdoutMeta?.contentLength ?? 0;
|
|
207
|
+
stderrLength = stderrMeta?.contentLength ?? 0;
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
this.#activeAborts.delete(subscriptionId);
|
|
211
|
+
this.#activeSpawns.delete(subscriptionId);
|
|
212
|
+
if (wakeRunNotify !== undefined) {
|
|
213
|
+
wakeRunNotify({
|
|
214
|
+
sessionId, runId, entryId, subscriptionId, closeStatus,
|
|
215
|
+
scheme: "exec",
|
|
216
|
+
summary: `exec://${pathname} completed (${exitLabel}); stdout=${stdoutLength} bytes, stderr=${stderrLength} bytes`,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async read(statement, ctx) {
|
|
222
|
+
return readSessionEntry(statement, ctx, Exec.manifest);
|
|
223
|
+
}
|
|
224
|
+
async show(statement, ctx) {
|
|
225
|
+
return showSessionEntry(statement, ctx, Exec.manifest);
|
|
226
|
+
}
|
|
227
|
+
async hide(statement, ctx) {
|
|
228
|
+
return hideSessionEntry(statement, ctx, Exec.manifest);
|
|
229
|
+
}
|
|
230
|
+
async find(statement, ctx) {
|
|
231
|
+
return findSessionEntries(statement, ctx, Exec.manifest.name);
|
|
232
|
+
}
|
|
233
|
+
async readEntry(pathname, ctx) {
|
|
234
|
+
return readEntry(pathname, ctx, Exec.manifest.name);
|
|
235
|
+
}
|
|
236
|
+
async writeEntry(pathname, entry, ctx) {
|
|
237
|
+
return writeEntry(pathname, entry, ctx, Exec.manifest.name);
|
|
238
|
+
}
|
|
239
|
+
async deleteEntry(pathname, ctx) {
|
|
240
|
+
return deleteEntry(pathname, ctx, Exec.manifest.name);
|
|
241
|
+
}
|
|
19
242
|
}
|
|
20
243
|
//# sourceMappingURL=Exec.js.map
|
package/dist/schemes/Exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Exec.js","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,iCAAiC;AAEjC,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,QAAQ,GAAmB;QAC9B,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE;YACH,aAAa,EAAE,IAAI,EAAI,gDAAgD;YACvE,QAAQ,EAAE,IAAI,EAAU,+CAA+C;SAC1E;KACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"Exec.js","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"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"}
|
package/dist/schemes/File.d.ts
CHANGED
|
@@ -4,16 +4,21 @@ type ReadResult = {
|
|
|
4
4
|
status: number;
|
|
5
5
|
content: string | null;
|
|
6
6
|
mimetype: string | null;
|
|
7
|
+
error?: string;
|
|
8
|
+
startLine?: number | null;
|
|
9
|
+
matches?: number | null;
|
|
7
10
|
};
|
|
8
11
|
type EditResult = {
|
|
9
12
|
status: number;
|
|
10
13
|
body?: string;
|
|
11
14
|
attrs?: object;
|
|
12
15
|
error?: string;
|
|
16
|
+
diff?: string;
|
|
13
17
|
};
|
|
14
18
|
type ApplyArgs = {
|
|
15
19
|
attrs: {
|
|
16
20
|
path?: string;
|
|
21
|
+
canonical?: string;
|
|
17
22
|
patched?: string;
|
|
18
23
|
[k: string]: unknown;
|
|
19
24
|
};
|
|
@@ -25,11 +30,10 @@ type ApplyResult = {
|
|
|
25
30
|
body?: string;
|
|
26
31
|
};
|
|
27
32
|
export default class File {
|
|
28
|
-
#private;
|
|
29
33
|
static manifest: SchemeManifest;
|
|
30
|
-
read(statement: ReadStatement,
|
|
31
|
-
edit(statement: EditStatement,
|
|
32
|
-
applyResolution(args: ApplyArgs): Promise<ApplyResult>;
|
|
34
|
+
read(statement: ReadStatement, ctx: PlurnkSchemeContext): Promise<ReadResult>;
|
|
35
|
+
edit(statement: EditStatement, ctx: PlurnkSchemeContext): Promise<EditResult>;
|
|
36
|
+
applyResolution(args: ApplyArgs, ctx: PlurnkSchemeContext): Promise<ApplyResult>;
|
|
33
37
|
}
|
|
34
38
|
export {};
|
|
35
39
|
//# sourceMappingURL=File.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAMnF,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAM1J,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnG,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACzH,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgDvE,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAY7B;IAEI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAoE7E,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8E7E,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;CAkDzF"}
|