@plurnk/plurnk-service 0.1.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/LICENSE +21 -0
- package/README.md +54 -0
- package/SPEC.md +1045 -0
- package/bin/plurnk-service.js +111 -0
- package/dist/core/ChannelWrite.d.ts +40 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -0
- package/dist/core/ChannelWrite.js +49 -0
- package/dist/core/ChannelWrite.js.map +1 -0
- package/dist/core/Db.d.ts +14 -0
- package/dist/core/Db.d.ts.map +1 -0
- package/dist/core/Db.js +7 -0
- package/dist/core/Db.js.map +1 -0
- package/dist/core/Engine.d.ts +107 -0
- package/dist/core/Engine.d.ts.map +1 -0
- package/dist/core/Engine.js +937 -0
- package/dist/core/Engine.js.map +1 -0
- package/dist/core/EnvFlags.d.ts +10 -0
- package/dist/core/EnvFlags.d.ts.map +1 -0
- package/dist/core/EnvFlags.js +82 -0
- package/dist/core/EnvFlags.js.map +1 -0
- package/dist/core/Migrator.d.ts +19 -0
- package/dist/core/Migrator.d.ts.map +1 -0
- package/dist/core/Migrator.js +55 -0
- package/dist/core/Migrator.js.map +1 -0
- package/dist/core/PluginLoader.d.ts +14 -0
- package/dist/core/PluginLoader.d.ts.map +1 -0
- package/dist/core/PluginLoader.js +100 -0
- package/dist/core/PluginLoader.js.map +1 -0
- package/dist/core/ProviderRegistry.d.ts +42 -0
- package/dist/core/ProviderRegistry.d.ts.map +1 -0
- package/dist/core/ProviderRegistry.js +72 -0
- package/dist/core/ProviderRegistry.js.map +1 -0
- package/dist/core/SchemeRegistry.d.ts +13 -0
- package/dist/core/SchemeRegistry.d.ts.map +1 -0
- package/dist/core/SchemeRegistry.js +50 -0
- package/dist/core/SchemeRegistry.js.map +1 -0
- package/dist/core/scheme-types.d.ts +37 -0
- package/dist/core/scheme-types.d.ts.map +1 -0
- package/dist/core/scheme-types.js +9 -0
- package/dist/core/scheme-types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/Mock.d.ts +43 -0
- package/dist/providers/Mock.d.ts.map +1 -0
- package/dist/providers/Mock.js +36 -0
- package/dist/providers/Mock.js.map +1 -0
- package/dist/schemes/Exec.d.ts +5 -0
- package/dist/schemes/Exec.d.ts.map +1 -0
- package/dist/schemes/Exec.js +20 -0
- package/dist/schemes/Exec.js.map +1 -0
- package/dist/schemes/File.d.ts +35 -0
- package/dist/schemes/File.d.ts.map +1 -0
- package/dist/schemes/File.js +149 -0
- package/dist/schemes/File.js.map +1 -0
- package/dist/schemes/Known.d.ts +19 -0
- package/dist/schemes/Known.d.ts.map +1 -0
- package/dist/schemes/Known.js +44 -0
- package/dist/schemes/Known.js.map +1 -0
- package/dist/schemes/Log.d.ts +13 -0
- package/dist/schemes/Log.d.ts.map +1 -0
- package/dist/schemes/Log.js +38 -0
- package/dist/schemes/Log.js.map +1 -0
- package/dist/schemes/Plurnk.d.ts +5 -0
- package/dist/schemes/Plurnk.d.ts.map +1 -0
- package/dist/schemes/Plurnk.js +15 -0
- package/dist/schemes/Plurnk.js.map +1 -0
- package/dist/schemes/Skill.d.ts +19 -0
- package/dist/schemes/Skill.d.ts.map +1 -0
- package/dist/schemes/Skill.js +46 -0
- package/dist/schemes/Skill.js.map +1 -0
- package/dist/schemes/Unknown.d.ts +19 -0
- package/dist/schemes/Unknown.d.ts.map +1 -0
- package/dist/schemes/Unknown.js +44 -0
- package/dist/schemes/Unknown.js.map +1 -0
- package/dist/schemes/_entry-crud.d.ts +24 -0
- package/dist/schemes/_entry-crud.d.ts.map +1 -0
- package/dist/schemes/_entry-crud.js +56 -0
- package/dist/schemes/_entry-crud.js.map +1 -0
- package/dist/schemes/_entry-find.d.ts +10 -0
- package/dist/schemes/_entry-find.d.ts.map +1 -0
- package/dist/schemes/_entry-find.js +41 -0
- package/dist/schemes/_entry-find.js.map +1 -0
- package/dist/schemes/_entry-ops.d.ts +21 -0
- package/dist/schemes/_entry-ops.d.ts.map +1 -0
- package/dist/schemes/_entry-ops.js +146 -0
- package/dist/schemes/_entry-ops.js.map +1 -0
- package/dist/schemes/_entry-send.d.ts +8 -0
- package/dist/schemes/_entry-send.d.ts.map +1 -0
- package/dist/schemes/_entry-send.js +56 -0
- package/dist/schemes/_entry-send.js.map +1 -0
- package/dist/server/ClientConnection.d.ts +22 -0
- package/dist/server/ClientConnection.d.ts.map +1 -0
- package/dist/server/ClientConnection.js +120 -0
- package/dist/server/ClientConnection.js.map +1 -0
- package/dist/server/Daemon.d.ts +43 -0
- package/dist/server/Daemon.d.ts.map +1 -0
- package/dist/server/Daemon.js +252 -0
- package/dist/server/Daemon.js.map +1 -0
- package/dist/server/MethodRegistry.d.ts +56 -0
- package/dist/server/MethodRegistry.d.ts.map +1 -0
- package/dist/server/MethodRegistry.js +55 -0
- package/dist/server/MethodRegistry.js.map +1 -0
- package/dist/server/clientTurn.d.ts +3 -0
- package/dist/server/clientTurn.d.ts.map +1 -0
- package/dist/server/clientTurn.js +22 -0
- package/dist/server/clientTurn.js.map +1 -0
- package/dist/server/dsl.d.ts +47 -0
- package/dist/server/dsl.d.ts.map +1 -0
- package/dist/server/dsl.js +117 -0
- package/dist/server/dsl.js.map +1 -0
- package/dist/server/envelope.d.ts +44 -0
- package/dist/server/envelope.d.ts.map +1 -0
- package/dist/server/envelope.js +113 -0
- package/dist/server/envelope.js.map +1 -0
- package/dist/server/logEntry.d.ts +30 -0
- package/dist/server/logEntry.d.ts.map +1 -0
- package/dist/server/logEntry.js +43 -0
- package/dist/server/logEntry.js.map +1 -0
- package/dist/server/methods/_dispatchAsClient.d.ts +8 -0
- package/dist/server/methods/_dispatchAsClient.d.ts.map +1 -0
- package/dist/server/methods/_dispatchAsClient.js +31 -0
- package/dist/server/methods/_dispatchAsClient.js.map +1 -0
- package/dist/server/methods/discover.d.ts +3 -0
- package/dist/server/methods/discover.d.ts.map +1 -0
- package/dist/server/methods/discover.js +7 -0
- package/dist/server/methods/discover.js.map +1 -0
- package/dist/server/methods/entry_read.d.ts +3 -0
- package/dist/server/methods/entry_read.d.ts.map +1 -0
- package/dist/server/methods/entry_read.js +56 -0
- package/dist/server/methods/entry_read.js.map +1 -0
- package/dist/server/methods/log_read.d.ts +3 -0
- package/dist/server/methods/log_read.d.ts.map +1 -0
- package/dist/server/methods/log_read.js +39 -0
- package/dist/server/methods/log_read.js.map +1 -0
- package/dist/server/methods/loop_resolve.d.ts +3 -0
- package/dist/server/methods/loop_resolve.d.ts.map +1 -0
- package/dist/server/methods/loop_resolve.js +45 -0
- package/dist/server/methods/loop_resolve.js.map +1 -0
- package/dist/server/methods/loop_run.d.ts +3 -0
- package/dist/server/methods/loop_run.d.ts.map +1 -0
- package/dist/server/methods/loop_run.js +112 -0
- package/dist/server/methods/loop_run.js.map +1 -0
- package/dist/server/methods/op_copy.d.ts +3 -0
- package/dist/server/methods/op_copy.d.ts.map +1 -0
- package/dist/server/methods/op_copy.js +24 -0
- package/dist/server/methods/op_copy.js.map +1 -0
- package/dist/server/methods/op_dispatch.d.ts +3 -0
- package/dist/server/methods/op_dispatch.d.ts.map +1 -0
- package/dist/server/methods/op_dispatch.js +17 -0
- package/dist/server/methods/op_dispatch.js.map +1 -0
- package/dist/server/methods/op_edit.d.ts +3 -0
- package/dist/server/methods/op_edit.d.ts.map +1 -0
- package/dist/server/methods/op_edit.js +22 -0
- package/dist/server/methods/op_edit.js.map +1 -0
- package/dist/server/methods/op_exec.d.ts +3 -0
- package/dist/server/methods/op_exec.d.ts.map +1 -0
- package/dist/server/methods/op_exec.js +19 -0
- package/dist/server/methods/op_exec.js.map +1 -0
- package/dist/server/methods/op_find.d.ts +3 -0
- package/dist/server/methods/op_find.d.ts.map +1 -0
- package/dist/server/methods/op_find.js +22 -0
- package/dist/server/methods/op_find.js.map +1 -0
- package/dist/server/methods/op_hide.d.ts +3 -0
- package/dist/server/methods/op_hide.d.ts.map +1 -0
- package/dist/server/methods/op_hide.js +22 -0
- package/dist/server/methods/op_hide.js.map +1 -0
- package/dist/server/methods/op_move.d.ts +3 -0
- package/dist/server/methods/op_move.d.ts.map +1 -0
- package/dist/server/methods/op_move.js +22 -0
- package/dist/server/methods/op_move.js.map +1 -0
- package/dist/server/methods/op_parse.d.ts +3 -0
- package/dist/server/methods/op_parse.d.ts.map +1 -0
- package/dist/server/methods/op_parse.js +23 -0
- package/dist/server/methods/op_parse.js.map +1 -0
- package/dist/server/methods/op_read.d.ts +3 -0
- package/dist/server/methods/op_read.d.ts.map +1 -0
- package/dist/server/methods/op_read.js +22 -0
- package/dist/server/methods/op_read.js.map +1 -0
- package/dist/server/methods/op_send.d.ts +3 -0
- package/dist/server/methods/op_send.d.ts.map +1 -0
- package/dist/server/methods/op_send.js +21 -0
- package/dist/server/methods/op_send.js.map +1 -0
- package/dist/server/methods/op_show.d.ts +3 -0
- package/dist/server/methods/op_show.d.ts.map +1 -0
- package/dist/server/methods/op_show.js +22 -0
- package/dist/server/methods/op_show.js.map +1 -0
- package/dist/server/methods/ping.d.ts +3 -0
- package/dist/server/methods/ping.d.ts.map +1 -0
- package/dist/server/methods/ping.js +7 -0
- package/dist/server/methods/ping.js.map +1 -0
- package/dist/server/methods/providers_list.d.ts +3 -0
- package/dist/server/methods/providers_list.d.ts.map +1 -0
- package/dist/server/methods/providers_list.js +19 -0
- package/dist/server/methods/providers_list.js.map +1 -0
- package/dist/server/methods/session_attach.d.ts +3 -0
- package/dist/server/methods/session_attach.d.ts.map +1 -0
- package/dist/server/methods/session_attach.js +42 -0
- package/dist/server/methods/session_attach.js.map +1 -0
- package/dist/server/methods/session_create.d.ts +3 -0
- package/dist/server/methods/session_create.d.ts.map +1 -0
- package/dist/server/methods/session_create.js +53 -0
- package/dist/server/methods/session_create.js.map +1 -0
- package/dist/server/methods/session_list.d.ts +3 -0
- package/dist/server/methods/session_list.d.ts.map +1 -0
- package/dist/server/methods/session_list.js +8 -0
- package/dist/server/methods/session_list.js.map +1 -0
- package/dist/server/methods/session_runs.d.ts +3 -0
- package/dist/server/methods/session_runs.d.ts.map +1 -0
- package/dist/server/methods/session_runs.js +18 -0
- package/dist/server/methods/session_runs.js.map +1 -0
- package/dist/server/methods/session_set_persona.d.ts +3 -0
- package/dist/server/methods/session_set_persona.d.ts.map +1 -0
- package/dist/server/methods/session_set_persona.js +27 -0
- package/dist/server/methods/session_set_persona.js.map +1 -0
- package/dist/server/methods/session_set_root.d.ts +3 -0
- package/dist/server/methods/session_set_root.d.ts.map +1 -0
- package/dist/server/methods/session_set_root.js +33 -0
- package/dist/server/methods/session_set_root.js.map +1 -0
- package/dist/server/yolo.d.ts +4 -0
- package/dist/server/yolo.d.ts.map +1 -0
- package/dist/server/yolo.js +48 -0
- package/dist/server/yolo.js.map +1 -0
- package/migrations/001_sessions.sql +11 -0
- package/migrations/002_runs.sql +16 -0
- package/migrations/003_loops.sql +12 -0
- package/migrations/004_turns.sql +18 -0
- package/migrations/005_entries.sql +44 -0
- package/migrations/006_log_entries.sql +51 -0
- package/migrations/007_visibility.sql +10 -0
- package/migrations/008_schemes_providers.sql +25 -0
- package/migrations/009_cost_rollups.sql +44 -0
- package/migrations/010_subscriptions.sql +36 -0
- package/migrations/011_turn_call_metadata.sql +7 -0
- package/migrations/012_proposal_lifecycle.sql +22 -0
- package/migrations/013_log_entries_lifecycle_columns.sql +22 -0
- package/migrations/014_loop_flags.sql +9 -0
- package/migrations/015_sessions_project_root.sql +6 -0
- package/migrations/016_persona_columns.sql +11 -0
- package/package.json +66 -0
- package/persona.md +1 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Db } from "./Db.ts";
|
|
2
|
+
export type WriterTier = "model" | "client" | "system" | "plugin";
|
|
3
|
+
export interface PlurnkSchemeContext {
|
|
4
|
+
readonly db: Db;
|
|
5
|
+
readonly sessionId: number;
|
|
6
|
+
readonly runId: number;
|
|
7
|
+
readonly loopId: number;
|
|
8
|
+
readonly turnId: number;
|
|
9
|
+
readonly writer: WriterTier;
|
|
10
|
+
readonly signal: AbortSignal | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface SchemeFlagAffinity {
|
|
13
|
+
readonly excludedInAsk?: boolean;
|
|
14
|
+
readonly requiresWeb?: boolean;
|
|
15
|
+
readonly requiresInteraction?: boolean;
|
|
16
|
+
readonly proposes?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface SchemeManifest {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly channels: Record<string, string>;
|
|
21
|
+
readonly defaultChannel: string;
|
|
22
|
+
readonly category: "data" | "logging";
|
|
23
|
+
readonly scope: "agent" | "session";
|
|
24
|
+
readonly writableBy: ReadonlyArray<WriterTier>;
|
|
25
|
+
readonly volatile: boolean;
|
|
26
|
+
readonly modelVisible: boolean;
|
|
27
|
+
readonly flags?: SchemeFlagAffinity;
|
|
28
|
+
}
|
|
29
|
+
export interface LoopFlags {
|
|
30
|
+
readonly mode: "ask" | "act";
|
|
31
|
+
readonly yolo: boolean;
|
|
32
|
+
readonly noWeb: boolean;
|
|
33
|
+
readonly noInteraction: boolean;
|
|
34
|
+
readonly noProposals: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare const DEFAULT_LOOP_FLAGS: LoopFlags;
|
|
37
|
+
//# sourceMappingURL=scheme-types.d.ts.map
|
|
@@ -0,0 +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;AAElC,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;CAC5C;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheme-types.js","sourceRoot":"","sources":["../../src/core/scheme-types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAgDjE,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/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { default as Engine } from "./core/Engine.ts";
|
|
2
|
+
export { default as SchemeRegistry } from "./core/SchemeRegistry.ts";
|
|
3
|
+
export { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
4
|
+
export { default as Daemon } from "./server/Daemon.ts";
|
|
5
|
+
export { default as MethodRegistry } from "./server/MethodRegistry.ts";
|
|
6
|
+
export type { MethodHandler, MethodRegistration, NotificationRegistration, Catalog, } from "./server/MethodRegistry.ts";
|
|
7
|
+
export { default as Known } from "./schemes/Known.ts";
|
|
8
|
+
export { default as Unknown } from "./schemes/Unknown.ts";
|
|
9
|
+
export { default as Skill } from "./schemes/Skill.ts";
|
|
10
|
+
export { default as Log } from "./schemes/Log.ts";
|
|
11
|
+
export { default as Plurnk } from "./schemes/Plurnk.ts";
|
|
12
|
+
export { default as Exec } from "./schemes/Exec.ts";
|
|
13
|
+
export { default as File } from "./schemes/File.ts";
|
|
14
|
+
export { default as Mock } from "./providers/Mock.ts";
|
|
15
|
+
export type { MockResponse, MockAssistant, ChatMessage } from "./providers/Mock.ts";
|
|
16
|
+
export type { EditResult, ReadResult, ShowHideResult, } from "./schemes/_entry-ops.ts";
|
|
17
|
+
export declare const PATHS: {
|
|
18
|
+
migrations: string;
|
|
19
|
+
instructionsSystem: string;
|
|
20
|
+
defaultPersona: string;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EACR,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,OAAO,GACV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEpF,YAAY,EACR,UAAU,EACV,UAAU,EACV,cAAc,GACjB,MAAM,yBAAyB,CAAC;AA0BjC,eAAO,MAAM,KAAK;;;;CAQjB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Public library API for @plurnk/plurnk-service.
|
|
2
|
+
//
|
|
3
|
+
// Consumers (plurnk CLI/TUI, future web app, etc.) import from here.
|
|
4
|
+
// Internal modules and tests reach into src/ paths directly; this file
|
|
5
|
+
// is the contract for external use.
|
|
6
|
+
export { default as Engine } from "./core/Engine.js";
|
|
7
|
+
export { default as SchemeRegistry } from "./core/SchemeRegistry.js";
|
|
8
|
+
// Mimetype handling is owned by @plurnk/plurnk-mimetypes. Consumers needing
|
|
9
|
+
// the orchestrator import directly from there.
|
|
10
|
+
export { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
11
|
+
export { default as Daemon } from "./server/Daemon.js";
|
|
12
|
+
export { default as MethodRegistry } from "./server/MethodRegistry.js";
|
|
13
|
+
export { default as Known } from "./schemes/Known.js";
|
|
14
|
+
export { default as Unknown } from "./schemes/Unknown.js";
|
|
15
|
+
export { default as Skill } from "./schemes/Skill.js";
|
|
16
|
+
export { default as Log } from "./schemes/Log.js";
|
|
17
|
+
export { default as Plurnk } from "./schemes/Plurnk.js";
|
|
18
|
+
export { default as Exec } from "./schemes/Exec.js";
|
|
19
|
+
export { default as File } from "./schemes/File.js";
|
|
20
|
+
export { default as Mock } from "./providers/Mock.js";
|
|
21
|
+
import { fileURLToPath } from "node:url";
|
|
22
|
+
import { dirname, resolve } from "node:path";
|
|
23
|
+
// Package-relative paths to non-code artifacts.
|
|
24
|
+
//
|
|
25
|
+
// `migrations` ships in this package's tarball.
|
|
26
|
+
// `instructionsSystem` resolves to `plurnk.md` IN THE GRAMMAR PACKAGE — single
|
|
27
|
+
// source of truth lives upstream. Plurnk-service doesn't carry its own copy;
|
|
28
|
+
// the grammar agent owns the prose.
|
|
29
|
+
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
30
|
+
const GRAMMAR_ROOT = dirname(fileURLToPath(import.meta.resolve("@plurnk/plurnk-grammar/package.json")));
|
|
31
|
+
// Resolve the default persona file path: PLURNK_PERSONA env (absolute or
|
|
32
|
+
// relative-to-package-root) → `persona.md` in package root as the
|
|
33
|
+
// hardcoded fallback. The env var lets operators point at a custom
|
|
34
|
+
// persona without forking the file in PACKAGE_ROOT.
|
|
35
|
+
const resolveDefaultPersona = () => {
|
|
36
|
+
const env = process.env.PLURNK_PERSONA;
|
|
37
|
+
if (typeof env === "string" && env.length > 0) {
|
|
38
|
+
return resolve(PACKAGE_ROOT, env);
|
|
39
|
+
}
|
|
40
|
+
return resolve(PACKAGE_ROOT, "persona.md");
|
|
41
|
+
};
|
|
42
|
+
export const PATHS = {
|
|
43
|
+
migrations: resolve(PACKAGE_ROOT, "migrations"),
|
|
44
|
+
instructionsSystem: resolve(GRAMMAR_ROOT, "plurnk.md"),
|
|
45
|
+
// packet.system.persona DEFAULT. Cascade at packet-build time is
|
|
46
|
+
// loops.persona > runs.persona > sessions.persona > this file
|
|
47
|
+
// RPC overrides on loop.run / session.attach / session.create populate
|
|
48
|
+
// the three persistence layers; this file is the final fallback.
|
|
49
|
+
defaultPersona: resolveDefaultPersona(),
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,oCAAoC;AAEpC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,4EAA4E;AAC5E,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQvE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAStD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,gDAAgD;AAChD,EAAE;AACF,gDAAgD;AAChD,+EAA+E;AAC/E,6EAA6E;AAC7E,oCAAoC;AACpC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC;AAExG,yEAAyE;AACzE,kEAAkE;AAClE,mEAAmE;AACnE,oDAAoD;AACpD,MAAM,qBAAqB,GAAG,GAAW,EAAE;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/C,kBAAkB,EAAE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC;IACtD,iEAAiE;IACjE,gEAAgE;IAChE,uEAAuE;IACvE,iEAAiE;IACjE,cAAc,EAAE,qBAAqB,EAAE;CAC1C,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { PlurnkStatement } from "@plurnk/plurnk-grammar";
|
|
2
|
+
import type { Provider, ProviderAssistant, ProviderUsage } from "../core/ProviderRegistry.ts";
|
|
3
|
+
export type ChatMessage = {
|
|
4
|
+
role: "system" | "user" | "assistant";
|
|
5
|
+
content: string;
|
|
6
|
+
};
|
|
7
|
+
export type MockAssistant = {
|
|
8
|
+
content: string;
|
|
9
|
+
reasoning: string | null;
|
|
10
|
+
usage?: ProviderUsage;
|
|
11
|
+
finishReason?: string | null;
|
|
12
|
+
model?: string;
|
|
13
|
+
ops?: PlurnkStatement[];
|
|
14
|
+
};
|
|
15
|
+
export type MockResponse = {
|
|
16
|
+
assistant: MockAssistant;
|
|
17
|
+
assistantRaw?: unknown;
|
|
18
|
+
};
|
|
19
|
+
export type MockReturnedAssistant = ProviderAssistant & {
|
|
20
|
+
ops?: PlurnkStatement[];
|
|
21
|
+
};
|
|
22
|
+
declare const DEFAULT_USAGE: ProviderUsage;
|
|
23
|
+
export default class Mock implements Provider {
|
|
24
|
+
#private;
|
|
25
|
+
constructor({ contextSize, responses }: {
|
|
26
|
+
contextSize: number;
|
|
27
|
+
responses: MockResponse[];
|
|
28
|
+
});
|
|
29
|
+
get contextSize(): number;
|
|
30
|
+
get model(): string;
|
|
31
|
+
countTokens(text: string): number;
|
|
32
|
+
costFor(_usage: ProviderUsage): number;
|
|
33
|
+
generate(_: {
|
|
34
|
+
messages: ChatMessage[];
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
}): Promise<{
|
|
37
|
+
assistant: MockReturnedAssistant;
|
|
38
|
+
assistantRaw: unknown;
|
|
39
|
+
}>;
|
|
40
|
+
get remaining(): number;
|
|
41
|
+
}
|
|
42
|
+
export { DEFAULT_USAGE as mockDefaultUsage };
|
|
43
|
+
//# sourceMappingURL=Mock.d.ts.map
|
|
@@ -0,0 +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;IAK1F,IAAI,WAAW,IAAI,MAAM,CAA8B;IACvD,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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const DEFAULT_USAGE = { prompt: 0, completion: 0, cached: 0, total: 0 };
|
|
2
|
+
export default class Mock {
|
|
3
|
+
#contextSize;
|
|
4
|
+
#queue;
|
|
5
|
+
constructor({ contextSize, responses }) {
|
|
6
|
+
this.#contextSize = contextSize;
|
|
7
|
+
this.#queue = [...responses];
|
|
8
|
+
}
|
|
9
|
+
get contextSize() { return this.#contextSize; }
|
|
10
|
+
get model() { return "mock"; }
|
|
11
|
+
// Heuristic tokenizer. Mock is test-only; real provider siblings ship
|
|
12
|
+
// family-specific tokenizers.
|
|
13
|
+
countTokens(text) {
|
|
14
|
+
return text.length === 0 ? 0 : Math.ceil(text.length / 4);
|
|
15
|
+
}
|
|
16
|
+
// Mock is free.
|
|
17
|
+
costFor(_usage) { return 0; }
|
|
18
|
+
async generate(_) {
|
|
19
|
+
const next = this.#queue.shift();
|
|
20
|
+
if (next === undefined)
|
|
21
|
+
throw new Error("Mock provider exhausted: no more queued responses");
|
|
22
|
+
const a = next.assistant;
|
|
23
|
+
const assistant = {
|
|
24
|
+
content: a.content,
|
|
25
|
+
reasoning: a.reasoning,
|
|
26
|
+
usage: a.usage ?? DEFAULT_USAGE,
|
|
27
|
+
finishReason: a.finishReason ?? "stop",
|
|
28
|
+
model: a.model ?? "mock",
|
|
29
|
+
...(a.ops !== undefined ? { ops: a.ops } : {}),
|
|
30
|
+
};
|
|
31
|
+
return { assistant, assistantRaw: next.assistantRaw ?? null };
|
|
32
|
+
}
|
|
33
|
+
get remaining() { return this.#queue.length; }
|
|
34
|
+
}
|
|
35
|
+
export { DEFAULT_USAGE as mockDefaultUsage };
|
|
36
|
+
//# sourceMappingURL=Mock.js.map
|
|
@@ -0,0 +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,CAAS;IACrB,MAAM,CAAiB;IAEvB,YAAY,EAAE,WAAW,EAAE,SAAS,EAAsD;QACtF,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,WAAW,KAAa,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Exec.d.ts","sourceRoot":"","sources":["../../src/schemes/Exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM9D,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAa7B;CACL"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// PROVISIONAL: subprocess execution scheme. Streams stdout/stderr as channels
|
|
2
|
+
// on the entry. Dynamic mimetype per call (text/plain in the simple case;
|
|
3
|
+
// future per-command detection).
|
|
4
|
+
export default class Exec {
|
|
5
|
+
static manifest = {
|
|
6
|
+
name: "exec",
|
|
7
|
+
channels: {},
|
|
8
|
+
defaultChannel: "stdout",
|
|
9
|
+
category: "data",
|
|
10
|
+
scope: "session",
|
|
11
|
+
writableBy: ["model", "client"],
|
|
12
|
+
volatile: true,
|
|
13
|
+
modelVisible: true,
|
|
14
|
+
flags: {
|
|
15
|
+
excludedInAsk: true, // exec is side-effecting; ask mode is read-only
|
|
16
|
+
proposes: true, // exec runs via proposal lifecycle unless yolo
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Exec.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { EditStatement, ReadStatement } from "@plurnk/plurnk-grammar";
|
|
2
|
+
import type { SchemeManifest, PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
3
|
+
type ReadResult = {
|
|
4
|
+
status: number;
|
|
5
|
+
content: string | null;
|
|
6
|
+
mimetype: string | null;
|
|
7
|
+
};
|
|
8
|
+
type EditResult = {
|
|
9
|
+
status: number;
|
|
10
|
+
body?: string;
|
|
11
|
+
attrs?: object;
|
|
12
|
+
error?: string;
|
|
13
|
+
};
|
|
14
|
+
type ApplyArgs = {
|
|
15
|
+
attrs: {
|
|
16
|
+
path?: string;
|
|
17
|
+
patched?: string;
|
|
18
|
+
[k: string]: unknown;
|
|
19
|
+
};
|
|
20
|
+
body?: string;
|
|
21
|
+
};
|
|
22
|
+
type ApplyResult = {
|
|
23
|
+
status: number;
|
|
24
|
+
outcome?: string;
|
|
25
|
+
body?: string;
|
|
26
|
+
};
|
|
27
|
+
export default class File {
|
|
28
|
+
#private;
|
|
29
|
+
static manifest: SchemeManifest;
|
|
30
|
+
read(statement: ReadStatement, _ctx: PlurnkSchemeContext): Promise<ReadResult>;
|
|
31
|
+
edit(statement: EditStatement, _ctx: PlurnkSchemeContext): Promise<EditResult>;
|
|
32
|
+
applyResolution(args: ApplyArgs): Promise<ApplyResult>;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=File.d.ts.map
|
|
@@ -0,0 +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;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACtF,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;AACpF,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE;QAAE,IAAI,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;AACrG,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,IAAI;;IACrB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAY7B;IAkCI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB9E,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgD9E,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CAqB/D"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { readFile, realpath, writeFile } from "node:fs/promises";
|
|
2
|
+
import { resolve, relative, isAbsolute } from "node:path";
|
|
3
|
+
import { createPatch } from "diff";
|
|
4
|
+
export default class File {
|
|
5
|
+
static manifest = {
|
|
6
|
+
name: "file",
|
|
7
|
+
channels: {}, // dynamic mimetype per file extension
|
|
8
|
+
defaultChannel: "body",
|
|
9
|
+
category: "data",
|
|
10
|
+
scope: "session",
|
|
11
|
+
writableBy: ["model", "client", "plugin"],
|
|
12
|
+
volatile: false,
|
|
13
|
+
modelVisible: true,
|
|
14
|
+
flags: {
|
|
15
|
+
proposes: true, // file writes go through proposal lifecycle (task #42)
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
#workspaceRoot = null;
|
|
19
|
+
#resolveWorkspaceRoot() {
|
|
20
|
+
if (this.#workspaceRoot !== null)
|
|
21
|
+
return this.#workspaceRoot;
|
|
22
|
+
const root = process.env.PLURNK_WORKSPACE_ROOT;
|
|
23
|
+
if (root === undefined || root === "")
|
|
24
|
+
return null;
|
|
25
|
+
this.#workspaceRoot = resolve(root);
|
|
26
|
+
return this.#workspaceRoot;
|
|
27
|
+
}
|
|
28
|
+
// Resolve + workspace-root containment check. Returns null on absence;
|
|
29
|
+
// throws on traversal escape. Used by both read and edit.
|
|
30
|
+
async #resolveContained(pathname) {
|
|
31
|
+
const root = this.#resolveWorkspaceRoot();
|
|
32
|
+
if (root === null)
|
|
33
|
+
return { error: "no-root" };
|
|
34
|
+
const requested = isAbsolute(pathname) ? pathname : resolve(root, pathname);
|
|
35
|
+
let canonical;
|
|
36
|
+
try {
|
|
37
|
+
canonical = await realpath(requested);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
if (err.code === "ENOENT") {
|
|
41
|
+
// For edit, missing target is OK — we'll write it. Caller
|
|
42
|
+
// distinguishes by checking error === "not-found".
|
|
43
|
+
return { error: "not-found" };
|
|
44
|
+
}
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
const rel = relative(root, canonical);
|
|
48
|
+
if (rel.startsWith("..") || isAbsolute(rel))
|
|
49
|
+
return { error: "traversal" };
|
|
50
|
+
return { canonical, root };
|
|
51
|
+
}
|
|
52
|
+
async read(statement, _ctx) {
|
|
53
|
+
if (statement.path === null)
|
|
54
|
+
return { status: 400, content: null, mimetype: null };
|
|
55
|
+
if (statement.lineMarker !== null)
|
|
56
|
+
return { status: 501, content: null, mimetype: null };
|
|
57
|
+
if (statement.body !== null)
|
|
58
|
+
return { status: 501, content: null, mimetype: null };
|
|
59
|
+
if (Array.isArray(statement.signal) && statement.signal.length > 0)
|
|
60
|
+
return { status: 501, content: null, mimetype: null };
|
|
61
|
+
const pathname = statement.path.kind === "url" ? statement.path.pathname : statement.path.raw;
|
|
62
|
+
const resolved = await this.#resolveContained(pathname);
|
|
63
|
+
if ("error" in resolved) {
|
|
64
|
+
if (resolved.error === "no-root")
|
|
65
|
+
return { status: 400, content: null, mimetype: null };
|
|
66
|
+
if (resolved.error === "not-found")
|
|
67
|
+
return { status: 404, content: null, mimetype: null };
|
|
68
|
+
return { status: 403, content: null, mimetype: null }; // traversal
|
|
69
|
+
}
|
|
70
|
+
const content = await readFile(resolved.canonical, "utf8");
|
|
71
|
+
return { status: 200, content, mimetype: "text/plain" };
|
|
72
|
+
}
|
|
73
|
+
// Edit op (task #42 canonical proposal consumer). Returns status=202
|
|
74
|
+
// with a udiff body for client review + attrs carrying the full patched
|
|
75
|
+
// content. Engine writes the proposed log entry, pauses dispatch, and
|
|
76
|
+
// calls applyResolution() (below) after the proposal accepts.
|
|
77
|
+
async edit(statement, _ctx) {
|
|
78
|
+
if (statement.path === null)
|
|
79
|
+
return { status: 400, error: "EDIT requires a path" };
|
|
80
|
+
if (statement.lineMarker !== null)
|
|
81
|
+
return { status: 501, error: "lineMarker-based edits not yet supported" };
|
|
82
|
+
const pathname = statement.path.kind === "url" ? statement.path.pathname : statement.path.raw;
|
|
83
|
+
const root = this.#resolveWorkspaceRoot();
|
|
84
|
+
if (root === null)
|
|
85
|
+
return { status: 400, error: "PLURNK_WORKSPACE_ROOT must be set" };
|
|
86
|
+
// Containment check (canonical path inside workspace). For edits,
|
|
87
|
+
// a not-found target is fine — we're proposing to create or
|
|
88
|
+
// overwrite. Traversal escape is fatal.
|
|
89
|
+
let canonical;
|
|
90
|
+
const requested = isAbsolute(pathname) ? pathname : resolve(root, pathname);
|
|
91
|
+
let original = "";
|
|
92
|
+
try {
|
|
93
|
+
canonical = await realpath(requested);
|
|
94
|
+
original = await readFile(canonical, "utf8");
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (err.code !== "ENOENT")
|
|
98
|
+
throw err;
|
|
99
|
+
// File doesn't exist — propose to create it.
|
|
100
|
+
canonical = requested;
|
|
101
|
+
}
|
|
102
|
+
// Re-check containment against the (now-resolved-or-fabricated)
|
|
103
|
+
// canonical path. The requested path could resolve to a parent of
|
|
104
|
+
// workspace via symlink; reject.
|
|
105
|
+
const rel = relative(root, canonical);
|
|
106
|
+
if (rel.startsWith("..") || isAbsolute(rel)) {
|
|
107
|
+
return { status: 403, error: "path escapes workspace root" };
|
|
108
|
+
}
|
|
109
|
+
const patched = statement.body ?? "";
|
|
110
|
+
const patch = createPatch(rel, original, patched, "current", "proposed");
|
|
111
|
+
return {
|
|
112
|
+
status: 202,
|
|
113
|
+
body: patch,
|
|
114
|
+
attrs: {
|
|
115
|
+
path: rel,
|
|
116
|
+
canonical,
|
|
117
|
+
patch, // full udiff (sent to client for render)
|
|
118
|
+
patched, // full new content (used by applyResolution)
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// applyResolution — called by Engine.dispatch after a proposed log
|
|
123
|
+
// entry resolves with decision=accept. Reads the attrs that the
|
|
124
|
+
// earlier edit() returned and writes the patched content to disk.
|
|
125
|
+
// Returns the final outcome that gets stored on the log entry.
|
|
126
|
+
async applyResolution(args) {
|
|
127
|
+
const { attrs, body } = args;
|
|
128
|
+
const canonical = attrs.canonical;
|
|
129
|
+
const patched = body ?? attrs.patched;
|
|
130
|
+
if (typeof canonical !== "string" || canonical.length === 0) {
|
|
131
|
+
return { status: 500, outcome: "applyResolution: missing attrs.canonical" };
|
|
132
|
+
}
|
|
133
|
+
if (typeof patched !== "string") {
|
|
134
|
+
return { status: 500, outcome: "applyResolution: missing patched content" };
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
await writeFile(canonical, patched, "utf8");
|
|
138
|
+
return { status: 200 };
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
return {
|
|
142
|
+
status: 500,
|
|
143
|
+
outcome: "write_failed",
|
|
144
|
+
body: err instanceof Error ? err.message : String(err),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=File.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/schemes/File.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SchemeManifest, PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
2
|
+
import type { EditStatement, FindStatement, HideStatement, ReadStatement, SendStatement, ShowStatement } from "@plurnk/plurnk-grammar";
|
|
3
|
+
import type { EditResult, ReadResult, ShowHideResult } from "./_entry-ops.ts";
|
|
4
|
+
import type { EntryData, ReadEntryResult, WriteEntryResult, DeleteEntryResult } from "./_entry-crud.ts";
|
|
5
|
+
import type { SendResult } from "./_entry-send.ts";
|
|
6
|
+
import type { FindResult } from "./_entry-find.ts";
|
|
7
|
+
export default class Known {
|
|
8
|
+
static manifest: SchemeManifest;
|
|
9
|
+
edit(statement: EditStatement, ctx: PlurnkSchemeContext): Promise<EditResult>;
|
|
10
|
+
read(statement: ReadStatement, ctx: PlurnkSchemeContext): Promise<ReadResult>;
|
|
11
|
+
show(statement: ShowStatement | HideStatement, ctx: PlurnkSchemeContext): Promise<ShowHideResult>;
|
|
12
|
+
hide(statement: ShowStatement | HideStatement, ctx: PlurnkSchemeContext): Promise<ShowHideResult>;
|
|
13
|
+
readEntry(pathname: string, ctx: PlurnkSchemeContext): Promise<ReadEntryResult>;
|
|
14
|
+
writeEntry(pathname: string, entry: EntryData, ctx: PlurnkSchemeContext): Promise<WriteEntryResult>;
|
|
15
|
+
deleteEntry(pathname: string, ctx: PlurnkSchemeContext): Promise<DeleteEntryResult>;
|
|
16
|
+
send(statement: SendStatement, ctx: PlurnkSchemeContext): Promise<SendResult>;
|
|
17
|
+
find(statement: FindStatement, ctx: PlurnkSchemeContext): Promise<FindResult>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Known.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Known.d.ts","sourceRoot":"","sources":["../../src/schemes/Known.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvI,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAS7B;IAEI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,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,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;IAInF,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;CAGtF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { editSessionEntry, readSessionEntry, showSessionEntry, hideSessionEntry } from "./_entry-ops.js";
|
|
2
|
+
import { readEntry, writeEntry, deleteEntry } from "./_entry-crud.js";
|
|
3
|
+
import { sendToSessionEntry } from "./_entry-send.js";
|
|
4
|
+
import { findSessionEntries } from "./_entry-find.js";
|
|
5
|
+
export default class Known {
|
|
6
|
+
static manifest = {
|
|
7
|
+
name: "known",
|
|
8
|
+
channels: { body: "text/markdown", preview: "text/markdown" },
|
|
9
|
+
defaultChannel: "body",
|
|
10
|
+
category: "data",
|
|
11
|
+
scope: "session",
|
|
12
|
+
writableBy: ["model", "client"],
|
|
13
|
+
volatile: false,
|
|
14
|
+
modelVisible: true,
|
|
15
|
+
};
|
|
16
|
+
async edit(statement, ctx) {
|
|
17
|
+
return editSessionEntry(statement, ctx, Known.manifest);
|
|
18
|
+
}
|
|
19
|
+
async read(statement, ctx) {
|
|
20
|
+
return readSessionEntry(statement, ctx, Known.manifest);
|
|
21
|
+
}
|
|
22
|
+
async show(statement, ctx) {
|
|
23
|
+
return showSessionEntry(statement, ctx, Known.manifest);
|
|
24
|
+
}
|
|
25
|
+
async hide(statement, ctx) {
|
|
26
|
+
return hideSessionEntry(statement, ctx, Known.manifest);
|
|
27
|
+
}
|
|
28
|
+
async readEntry(pathname, ctx) {
|
|
29
|
+
return readEntry(pathname, ctx, Known.manifest.name);
|
|
30
|
+
}
|
|
31
|
+
async writeEntry(pathname, entry, ctx) {
|
|
32
|
+
return writeEntry(pathname, entry, ctx, Known.manifest.name);
|
|
33
|
+
}
|
|
34
|
+
async deleteEntry(pathname, ctx) {
|
|
35
|
+
return deleteEntry(pathname, ctx, Known.manifest.name);
|
|
36
|
+
}
|
|
37
|
+
async send(statement, ctx) {
|
|
38
|
+
return sendToSessionEntry(statement, ctx, Known.manifest.name);
|
|
39
|
+
}
|
|
40
|
+
async find(statement, ctx) {
|
|
41
|
+
return findSessionEntries(statement, ctx, Known.manifest.name);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=Known.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Known.js","sourceRoot":"","sources":["../../src/schemes/Known.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,MAAM,CAAC,QAAQ,GAAmB;QAC9B,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE;QAC7D,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;KACrB,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE,GAAwB;QACzD,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE,GAAwB;QACzD,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAwC,EAAE,GAAwB;QACzE,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAwC,EAAE,GAAwB;QACzE,OAAO,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,GAAwB;QACtD,OAAO,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,KAAgB,EAAE,GAAwB;QACzE,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,GAAwB;QACxD,OAAO,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE,GAAwB;QACzD,OAAO,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE,GAAwB;QACzD,OAAO,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReadStatement } from "@plurnk/plurnk-grammar";
|
|
2
|
+
import type { SchemeManifest, PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
3
|
+
type ReadResult = {
|
|
4
|
+
status: number;
|
|
5
|
+
content: string | null;
|
|
6
|
+
mimetype: string | null;
|
|
7
|
+
};
|
|
8
|
+
export default class Log {
|
|
9
|
+
static manifest: SchemeManifest;
|
|
10
|
+
read(statement: ReadStatement, ctx: PlurnkSchemeContext): Promise<ReadResult>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=Log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../src/schemes/Log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAItF,MAAM,CAAC,OAAO,OAAO,GAAG;IACpB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAS7B;IAEI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;CA6BtF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const COORDINATE = /^(\d+)\/(\d+)\/(\d+)$/;
|
|
2
|
+
export default class Log {
|
|
3
|
+
static manifest = {
|
|
4
|
+
name: "log",
|
|
5
|
+
channels: {}, // logs render through read(), not channel storage
|
|
6
|
+
defaultChannel: "",
|
|
7
|
+
category: "logging",
|
|
8
|
+
scope: "session",
|
|
9
|
+
writableBy: ["system"], // engine-only writes; model & client read
|
|
10
|
+
volatile: false,
|
|
11
|
+
modelVisible: true,
|
|
12
|
+
};
|
|
13
|
+
async read(statement, ctx) {
|
|
14
|
+
const { db, runId } = ctx;
|
|
15
|
+
if (statement.path === null)
|
|
16
|
+
return { status: 400, content: null, mimetype: null };
|
|
17
|
+
if (statement.lineMarker !== null)
|
|
18
|
+
return { status: 501, content: null, mimetype: null };
|
|
19
|
+
if (statement.body !== null)
|
|
20
|
+
return { status: 501, content: null, mimetype: null };
|
|
21
|
+
if (Array.isArray(statement.signal) && statement.signal.length > 0)
|
|
22
|
+
return { status: 501, content: null, mimetype: null };
|
|
23
|
+
const pathname = statement.path.kind === "url" ? statement.path.pathname : statement.path.raw;
|
|
24
|
+
const match = COORDINATE.exec(pathname);
|
|
25
|
+
if (match === null)
|
|
26
|
+
return { status: 400, content: null, mimetype: null };
|
|
27
|
+
const loopSeq = Number(match[1]);
|
|
28
|
+
const turnSeq = Number(match[2]);
|
|
29
|
+
const actionIndex = Number(match[3]);
|
|
30
|
+
const row = await db.log_read_by_coordinate.get({ run_id: runId, loop_seq: loopSeq, turn_seq: turnSeq, action_index: actionIndex });
|
|
31
|
+
if (row === undefined)
|
|
32
|
+
return { status: 404, content: null, mimetype: null };
|
|
33
|
+
const target = row.target_scheme !== null ? `${row.target_scheme}://${row.target_pathname ?? ""}` : (row.target_pathname ?? "(no path)");
|
|
34
|
+
const summary = `${row.op} ${target}\nstatus: ${row.status_rx}\nresponse: ${row.rx}`;
|
|
35
|
+
return { status: 200, content: summary, mimetype: "text/plain" };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=Log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/schemes/Log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plurnk.d.ts","sourceRoot":"","sources":["../../src/schemes/Plurnk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAK9D,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,MAAM,CAAC,QAAQ,EAAE,cAAc,CAS7B;CACL"}
|