odai-dsh-agent 0.2.5 → 0.2.6
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 +3 -3
- package/build/bin/odai-dsh-agent.d.mts +3 -0
- package/build/bin/odai-dsh-agent.d.mts.map +1 -0
- package/build/bin/odai-dsh-agent.mjs +114 -0
- package/build/bin/odai-dsh-agent.mjs.map +1 -0
- package/build/src/dsh-version.d.mts +16 -0
- package/build/src/dsh-version.d.mts.map +1 -0
- package/build/src/dsh-version.mjs +20 -0
- package/build/src/dsh-version.mjs.map +1 -0
- package/build/src/installer.d.mts +46 -0
- package/build/src/installer.d.mts.map +1 -0
- package/build/src/installer.mjs +397 -0
- package/build/src/installer.mjs.map +1 -0
- package/package.json +13 -12
- package/preset/odai/runtime/compaction-config.d.mts +66 -0
- package/preset/odai/runtime/compaction-config.d.mts.map +1 -0
- package/preset/odai/runtime/compaction-config.mjs +320 -342
- package/preset/odai/runtime/compaction-config.mjs.map +1 -0
- package/preset/odai/runtime/compaction-runtime.d.mts +68 -0
- package/preset/odai/runtime/compaction-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/compaction-runtime.mjs +157 -0
- package/preset/odai/runtime/compaction-runtime.mjs.map +1 -0
- package/preset/odai/runtime/context-activation.d.mts +31 -0
- package/preset/odai/runtime/context-activation.d.mts.map +1 -0
- package/preset/odai/runtime/context-activation.mjs +55 -49
- package/preset/odai/runtime/context-activation.mjs.map +1 -0
- package/preset/odai/runtime/context-capability.d.mts +16 -0
- package/preset/odai/runtime/context-capability.d.mts.map +1 -0
- package/preset/odai/runtime/context-capability.mjs +79 -74
- package/preset/odai/runtime/context-capability.mjs.map +1 -0
- package/preset/odai/runtime/governance.d.mts +30 -0
- package/preset/odai/runtime/governance.d.mts.map +1 -0
- package/preset/odai/runtime/governance.mjs +126 -113
- package/preset/odai/runtime/governance.mjs.map +1 -0
- package/preset/odai/runtime/human-care.d.mts +13 -0
- package/preset/odai/runtime/human-care.d.mts.map +1 -0
- package/preset/odai/runtime/human-care.mjs +45 -42
- package/preset/odai/runtime/human-care.mjs.map +1 -0
- package/preset/odai/runtime/human-safety-continuity-store.d.mts +43 -0
- package/preset/odai/runtime/human-safety-continuity-store.d.mts.map +1 -0
- package/preset/odai/runtime/human-safety-continuity-store.mjs +193 -215
- package/preset/odai/runtime/human-safety-continuity-store.mjs.map +1 -0
- package/preset/odai/runtime/human-safety-continuity.d.mts +27 -0
- package/preset/odai/runtime/human-safety-continuity.d.mts.map +1 -0
- package/preset/odai/runtime/human-safety-continuity.mjs +205 -216
- package/preset/odai/runtime/human-safety-continuity.mjs.map +1 -0
- package/preset/odai/runtime/human-safety.d.mts +14 -0
- package/preset/odai/runtime/human-safety.d.mts.map +1 -0
- package/preset/odai/runtime/human-safety.mjs +50 -47
- package/preset/odai/runtime/human-safety.mjs.map +1 -0
- package/preset/odai/runtime/index.d.mts +8 -0
- package/preset/odai/runtime/index.d.mts.map +1 -0
- package/preset/odai/runtime/index.mjs +161 -2473
- package/preset/odai/runtime/index.mjs.map +1 -0
- package/preset/odai/runtime/lifecycle-runtime.d.mts +83 -0
- package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/lifecycle-runtime.mjs +1081 -0
- package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -0
- package/preset/odai/runtime/model-route.d.mts +22 -0
- package/preset/odai/runtime/model-route.d.mts.map +1 -0
- package/preset/odai/runtime/model-route.mjs +68 -60
- package/preset/odai/runtime/model-route.mjs.map +1 -0
- package/preset/odai/runtime/output-config.d.mts +54 -0
- package/preset/odai/runtime/output-config.d.mts.map +1 -0
- package/preset/odai/runtime/output-config.mjs +289 -315
- package/preset/odai/runtime/output-config.mjs.map +1 -0
- package/preset/odai/runtime/output-policy-state.d.mts +3 -0
- package/preset/odai/runtime/output-policy-state.d.mts.map +1 -0
- package/preset/odai/runtime/output-policy-state.mjs +41 -29
- package/preset/odai/runtime/output-policy-state.mjs.map +1 -0
- package/preset/odai/runtime/prompt-runtime.d.mts +55 -0
- package/preset/odai/runtime/prompt-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/prompt-runtime.mjs +303 -0
- package/preset/odai/runtime/prompt-runtime.mjs.map +1 -0
- package/preset/odai/runtime/research-packet.d.mts +30 -0
- package/preset/odai/runtime/research-packet.d.mts.map +1 -0
- package/preset/odai/runtime/research-packet.mjs +116 -117
- package/preset/odai/runtime/research-packet.mjs.map +1 -0
- package/preset/odai/runtime/responsibility-gap.d.mts +26 -0
- package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -0
- package/preset/odai/runtime/responsibility-gap.mjs +91 -85
- package/preset/odai/runtime/responsibility-gap.mjs.map +1 -0
- package/preset/odai/runtime/responsibility-scope.d.mts +69 -0
- package/preset/odai/runtime/responsibility-scope.d.mts.map +1 -0
- package/preset/odai/runtime/responsibility-scope.mjs +199 -171
- package/preset/odai/runtime/responsibility-scope.mjs.map +1 -0
- package/preset/odai/runtime/role-overlays.d.mts +5 -0
- package/preset/odai/runtime/role-overlays.d.mts.map +1 -0
- package/preset/odai/runtime/role-overlays.mjs +14 -13
- package/preset/odai/runtime/role-overlays.mjs.map +1 -0
- package/preset/odai/runtime/route-card.d.mts +42 -0
- package/preset/odai/runtime/route-card.d.mts.map +1 -0
- package/preset/odai/runtime/route-card.mjs +158 -146
- package/preset/odai/runtime/route-card.mjs.map +1 -0
- package/preset/odai/runtime/router.d.mts +79 -0
- package/preset/odai/runtime/router.d.mts.map +1 -0
- package/preset/odai/runtime/router.mjs +491 -559
- package/preset/odai/runtime/router.mjs.map +1 -0
- package/preset/odai/runtime/routing-config.d.mts +76 -0
- package/preset/odai/runtime/routing-config.d.mts.map +1 -0
- package/preset/odai/runtime/routing-config.mjs +373 -438
- package/preset/odai/runtime/routing-config.mjs.map +1 -0
- package/preset/odai/runtime/routing-context.d.mts +47 -0
- package/preset/odai/runtime/routing-context.d.mts.map +1 -0
- package/preset/odai/runtime/routing-context.mjs +238 -273
- package/preset/odai/runtime/routing-context.mjs.map +1 -0
- package/preset/odai/runtime/runtime-config.d.mts +24 -0
- package/preset/odai/runtime/runtime-config.d.mts.map +1 -0
- package/preset/odai/runtime/runtime-config.mjs +181 -0
- package/preset/odai/runtime/runtime-config.mjs.map +1 -0
- package/preset/odai/runtime/runtime-support.d.mts +91 -0
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -0
- package/preset/odai/runtime/runtime-support.mjs +371 -0
- package/preset/odai/runtime/runtime-support.mjs.map +1 -0
- package/preset/odai/runtime/runtime-types.d.mts +235 -0
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -0
- package/preset/odai/runtime/runtime-types.mjs +4 -0
- package/preset/odai/runtime/runtime-types.mjs.map +1 -0
- package/preset/odai/runtime/semantic-memory-store.d.mts +110 -0
- package/preset/odai/runtime/semantic-memory-store.d.mts.map +1 -0
- package/preset/odai/runtime/semantic-memory-store.mjs +271 -385
- package/preset/odai/runtime/semantic-memory-store.mjs.map +1 -0
- package/preset/odai/runtime/semantic-memory.d.mts +88 -0
- package/preset/odai/runtime/semantic-memory.d.mts.map +1 -0
- package/preset/odai/runtime/semantic-memory.mjs +790 -750
- package/preset/odai/runtime/semantic-memory.mjs.map +1 -0
- package/preset/odai/runtime/session-compat.d.mts +31 -0
- package/preset/odai/runtime/session-compat.d.mts.map +1 -0
- package/preset/odai/runtime/session-compat.mjs +301 -328
- package/preset/odai/runtime/session-compat.mjs.map +1 -0
- package/preset/odai/runtime/session-evidence.d.mts +25 -0
- package/preset/odai/runtime/session-evidence.d.mts.map +1 -0
- package/preset/odai/runtime/session-evidence.mjs +309 -287
- package/preset/odai/runtime/session-evidence.mjs.map +1 -0
- package/preset/odai/runtime/skill-bundle.d.mts +53 -0
- package/preset/odai/runtime/skill-bundle.d.mts.map +1 -0
- package/preset/odai/runtime/skill-bundle.mjs +286 -276
- package/preset/odai/runtime/skill-bundle.mjs.map +1 -0
- package/preset/odai/runtime/skill-evolution.d.mts +112 -0
- package/preset/odai/runtime/skill-evolution.d.mts.map +1 -0
- package/preset/odai/runtime/skill-evolution.mjs +1287 -1261
- package/preset/odai/runtime/skill-evolution.mjs.map +1 -0
- package/preset/odai/runtime/skill-selection-state.d.mts +5 -0
- package/preset/odai/runtime/skill-selection-state.d.mts.map +1 -0
- package/preset/odai/runtime/skill-selection-state.mjs +59 -43
- package/preset/odai/runtime/skill-selection-state.mjs.map +1 -0
- package/preset/odai/runtime/skill-selector.d.mts +28 -0
- package/preset/odai/runtime/skill-selector.d.mts.map +1 -0
- package/preset/odai/runtime/skill-selector.mjs +100 -109
- package/preset/odai/runtime/skill-selector.mjs.map +1 -0
- package/preset/odai/runtime/skill-source-config.d.mts +32 -0
- package/preset/odai/runtime/skill-source-config.d.mts.map +1 -0
- package/preset/odai/runtime/skill-source-config.mjs +200 -210
- package/preset/odai/runtime/skill-source-config.mjs.map +1 -0
- package/preset/odai/runtime/store-lock.d.mts +2 -0
- package/preset/odai/runtime/store-lock.d.mts.map +1 -0
- package/preset/odai/runtime/store-lock.mjs +92 -87
- package/preset/odai/runtime/store-lock.mjs.map +1 -0
- package/preset/odai/runtime/tool-runtime.d.mts +43 -0
- package/preset/odai/runtime/tool-runtime.d.mts.map +1 -0
- package/preset/odai/runtime/tool-runtime.mjs +221 -0
- package/preset/odai/runtime/tool-runtime.mjs.map +1 -0
- package/bin/odai-dsh-agent.mjs +0 -108
- package/scripts/verify-agent-load.mjs +0 -260
- package/src/dsh-version.mjs +0 -24
- package/src/installer.mjs +0 -385
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { UnknownRecord } from "./runtime-types.mjs";
|
|
2
|
+
export declare const HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION = 1;
|
|
3
|
+
export declare const HUMAN_SAFETY_CONTINUITY_CATEGORIES: readonly ["care-preference", "noticed-signal", "effective-support", "safety-plan"];
|
|
4
|
+
export type HumanSafetyContinuityCategory = (typeof HUMAN_SAFETY_CONTINUITY_CATEGORIES)[number];
|
|
5
|
+
export declare const MAX_HUMAN_SAFETY_CONTINUITY_ENTRIES = 80;
|
|
6
|
+
export declare const MAX_HUMAN_SAFETY_CONTINUITY_VALUE_CHARS = 600;
|
|
7
|
+
export interface HumanSafetyContinuityEntry {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly category: HumanSafetyContinuityCategory;
|
|
10
|
+
readonly value: string;
|
|
11
|
+
readonly createdAt: string;
|
|
12
|
+
readonly updatedAt: string;
|
|
13
|
+
}
|
|
14
|
+
export interface HumanSafetyContinuityStore {
|
|
15
|
+
readonly schemaVersion: 1;
|
|
16
|
+
readonly entries: readonly HumanSafetyContinuityEntry[];
|
|
17
|
+
}
|
|
18
|
+
export interface MutableHumanSafetyContinuityEntry {
|
|
19
|
+
id: string;
|
|
20
|
+
category: HumanSafetyContinuityCategory;
|
|
21
|
+
value: string;
|
|
22
|
+
createdAt: string;
|
|
23
|
+
updatedAt: string;
|
|
24
|
+
}
|
|
25
|
+
export interface MutableHumanSafetyContinuityStore {
|
|
26
|
+
schemaVersion: 1;
|
|
27
|
+
entries: MutableHumanSafetyContinuityEntry[];
|
|
28
|
+
}
|
|
29
|
+
export interface ContinuityMutationOutcome extends UnknownRecord {
|
|
30
|
+
changed?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare class HumanSafetyContinuityStoreValidationError extends Error {
|
|
33
|
+
}
|
|
34
|
+
export declare function resolveHumanSafetyContinuityStorePath(configuredPath?: unknown, env?: Readonly<Record<string, string | undefined>>): string;
|
|
35
|
+
export declare function readHumanSafetyContinuityStore(storePath: string): Readonly<HumanSafetyContinuityStore>;
|
|
36
|
+
export declare function mutateHumanSafetyContinuityStore<TOutcome extends ContinuityMutationOutcome>(storePath: string, mutate: (store: MutableHumanSafetyContinuityStore) => TOutcome): Readonly<TOutcome & {
|
|
37
|
+
store: Readonly<HumanSafetyContinuityStore>;
|
|
38
|
+
}>;
|
|
39
|
+
export declare function clearHumanSafetyContinuityStore(storePath: string): Readonly<{
|
|
40
|
+
changed: boolean;
|
|
41
|
+
store: Readonly<HumanSafetyContinuityStore>;
|
|
42
|
+
}>;
|
|
43
|
+
//# sourceMappingURL=human-safety-continuity-store.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-safety-continuity-store.d.mts","sourceRoot":"","sources":["../src/human-safety-continuity-store.mts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,eAAO,MAAM,kCAAkC,oFAKpC,CAAC;AACZ,MAAM,MAAM,6BAA6B,GAAG,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhG,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAE3D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,6BAA6B,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,iCAAiC,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,yBAA0B,SAAQ,aAAa;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAWD,qBAAa,yCAA0C,SAAQ,KAAK;CAAG;AA6GvE,wBAAgB,qCAAqC,CACnD,cAAc,GAAE,OAAmB,EACnC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAWR;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,0BAA0B,CAAC,CAyBtG;AA6BD,wBAAgB,gCAAgC,CAAC,QAAQ,SAAS,yBAAyB,EACzF,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,QAAQ,GAC7D,QAAQ,CAAC,QAAQ,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAA;CAAE,CAAC,CAoBtE;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,GAChB,QAAQ,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAA;CAAE,CAAC,CAY7E"}
|
|
@@ -1,254 +1,232 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import {
|
|
3
|
-
closeSync,
|
|
4
|
-
constants,
|
|
5
|
-
existsSync,
|
|
6
|
-
fstatSync,
|
|
7
|
-
fsyncSync,
|
|
8
|
-
lstatSync,
|
|
9
|
-
mkdirSync,
|
|
10
|
-
openSync,
|
|
11
|
-
readFileSync,
|
|
12
|
-
renameSync,
|
|
13
|
-
rmSync,
|
|
14
|
-
writeFileSync,
|
|
15
|
-
} from "node:fs";
|
|
2
|
+
import { closeSync, constants, existsSync, fstatSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
16
3
|
import { homedir } from "node:os";
|
|
17
4
|
import { dirname, resolve } from "node:path";
|
|
18
|
-
|
|
19
5
|
import { acquireOwnedStoreLock } from "./store-lock.mjs";
|
|
20
|
-
|
|
6
|
+
import { isUnknownRecord } from "./runtime-types.mjs";
|
|
21
7
|
export const HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION = 1;
|
|
22
8
|
export const HUMAN_SAFETY_CONTINUITY_CATEGORIES = Object.freeze([
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
9
|
+
"care-preference",
|
|
10
|
+
"noticed-signal",
|
|
11
|
+
"effective-support",
|
|
12
|
+
"safety-plan",
|
|
27
13
|
]);
|
|
28
14
|
export const MAX_HUMAN_SAFETY_CONTINUITY_ENTRIES = 80;
|
|
29
15
|
export const MAX_HUMAN_SAFETY_CONTINUITY_VALUE_CHARS = 600;
|
|
30
|
-
|
|
31
16
|
const STORE_FIELDS = new Set(["schemaVersion", "entries"]);
|
|
32
17
|
const ENTRY_FIELDS = new Set(["id", "category", "value", "createdAt", "updatedAt"]);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return value;
|
|
41
|
-
}
|
|
42
|
-
|
|
18
|
+
export class HumanSafetyContinuityStoreValidationError extends Error {
|
|
19
|
+
}
|
|
20
|
+
function errorCode(error) {
|
|
21
|
+
if (error === null || typeof error !== "object" || !("code" in error))
|
|
22
|
+
return undefined;
|
|
23
|
+
return typeof error.code === "string" ? error.code : undefined;
|
|
24
|
+
}
|
|
43
25
|
function rejectUnknown(value, allowed, field) {
|
|
44
|
-
|
|
45
|
-
|
|
26
|
+
const unknownFields = Object.keys(value).filter((name) => !allowed.has(name));
|
|
27
|
+
if (unknownFields.length > 0)
|
|
28
|
+
throw new TypeError(`${field} has unknown fields: ${unknownFields.join(", ")}`);
|
|
46
29
|
}
|
|
47
|
-
|
|
48
30
|
function requiredString(value, field, max) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
31
|
+
if (typeof value !== "string" || value.trim() === "" || value.length > max) {
|
|
32
|
+
throw new TypeError(`${field} must be a non-empty string of at most ${max} characters`);
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
53
35
|
}
|
|
54
|
-
|
|
55
36
|
function validateTimestamp(value, field) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
37
|
+
const timestamp = requiredString(value, field, 64);
|
|
38
|
+
if (!Number.isFinite(Date.parse(timestamp)))
|
|
39
|
+
throw new TypeError(`${field} must be an ISO timestamp`);
|
|
40
|
+
return timestamp;
|
|
41
|
+
}
|
|
42
|
+
function isContinuityCategory(value) {
|
|
43
|
+
return typeof value === "string" && HUMAN_SAFETY_CONTINUITY_CATEGORIES.includes(value);
|
|
59
44
|
}
|
|
60
|
-
|
|
61
45
|
function validateEntry(value, field) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
category: entry.category,
|
|
74
|
-
value: entry.value,
|
|
75
|
-
createdAt: entry.createdAt,
|
|
76
|
-
updatedAt: entry.updatedAt,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
|
|
46
|
+
if (!isUnknownRecord(value))
|
|
47
|
+
throw new TypeError(`${field} must be an object`);
|
|
48
|
+
rejectUnknown(value, ENTRY_FIELDS, field);
|
|
49
|
+
const id = requiredString(value.id, `${field}.id`, 64);
|
|
50
|
+
if (!isContinuityCategory(value.category))
|
|
51
|
+
throw new TypeError(`${field}.category is not supported`);
|
|
52
|
+
const entryValue = requiredString(value.value, `${field}.value`, MAX_HUMAN_SAFETY_CONTINUITY_VALUE_CHARS);
|
|
53
|
+
const createdAt = validateTimestamp(value.createdAt, `${field}.createdAt`);
|
|
54
|
+
const updatedAt = validateTimestamp(value.updatedAt, `${field}.updatedAt`);
|
|
55
|
+
return Object.freeze({ id, category: value.category, value: entryValue, createdAt, updatedAt });
|
|
56
|
+
}
|
|
80
57
|
function validateStore(value, field) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
entries: Object.freeze(entries)
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
58
|
+
if (!isUnknownRecord(value))
|
|
59
|
+
throw new TypeError(`${field} must be an object`);
|
|
60
|
+
rejectUnknown(value, STORE_FIELDS, field);
|
|
61
|
+
if (value.schemaVersion !== HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION) {
|
|
62
|
+
throw new TypeError(`${field}.schemaVersion must be ${HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION}`);
|
|
63
|
+
}
|
|
64
|
+
if (!Array.isArray(value.entries) || value.entries.length > MAX_HUMAN_SAFETY_CONTINUITY_ENTRIES) {
|
|
65
|
+
throw new TypeError(`${field}.entries must contain at most ${MAX_HUMAN_SAFETY_CONTINUITY_ENTRIES} items`);
|
|
66
|
+
}
|
|
67
|
+
const entries = value.entries.map((entry, index) => validateEntry(entry, `${field}.entries[${index}]`));
|
|
68
|
+
const ids = new Set();
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
if (ids.has(entry.id))
|
|
71
|
+
throw new TypeError(`${field}.entries contains duplicate id ${entry.id}`);
|
|
72
|
+
ids.add(entry.id);
|
|
73
|
+
}
|
|
74
|
+
return Object.freeze({ schemaVersion: HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION, entries: Object.freeze(entries) });
|
|
75
|
+
}
|
|
101
76
|
function emptyStore() {
|
|
102
|
-
|
|
103
|
-
schemaVersion: HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION,
|
|
104
|
-
entries: Object.freeze([]),
|
|
105
|
-
});
|
|
77
|
+
return Object.freeze({ schemaVersion: HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION, entries: Object.freeze([]) });
|
|
106
78
|
}
|
|
107
|
-
|
|
108
79
|
function assertNoSymlink(path, label) {
|
|
109
|
-
|
|
110
|
-
|
|
80
|
+
if (!existsSync(path))
|
|
81
|
+
return;
|
|
82
|
+
if (lstatSync(path).isSymbolicLink())
|
|
83
|
+
throw new Error(`${label} must not be a symbolic link: ${path}`);
|
|
111
84
|
}
|
|
112
|
-
|
|
113
85
|
function assertSafeStorePath(storePath) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
86
|
+
const parent = dirname(storePath);
|
|
87
|
+
const grandparent = dirname(parent);
|
|
88
|
+
assertNoSymlink(grandparent, "Odai human-safety continuity parent");
|
|
89
|
+
assertNoSymlink(parent, "Odai human-safety continuity directory");
|
|
90
|
+
assertNoSymlink(storePath, "Odai human-safety continuity store");
|
|
91
|
+
if (existsSync(parent) && !lstatSync(parent).isDirectory()) {
|
|
92
|
+
throw new Error(`Odai human-safety continuity directory is not a directory: ${parent}`);
|
|
93
|
+
}
|
|
94
|
+
if (existsSync(storePath) && !lstatSync(storePath).isFile()) {
|
|
95
|
+
throw new Error(`Odai human-safety continuity store is not a regular file: ${storePath}`);
|
|
96
|
+
}
|
|
97
|
+
return [grandparent, parent]
|
|
98
|
+
.filter((path) => existsSync(path))
|
|
99
|
+
.map((path) => {
|
|
100
|
+
const stat = lstatSync(path);
|
|
101
|
+
return Object.freeze({ path, dev: stat.dev, ino: stat.ino });
|
|
130
102
|
});
|
|
131
103
|
}
|
|
132
|
-
|
|
133
104
|
function assertDirectoryIdentities(identities) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
105
|
+
for (const identity of identities) {
|
|
106
|
+
const stat = lstatSync(identity.path);
|
|
107
|
+
if (stat.isSymbolicLink() || !stat.isDirectory() || stat.dev !== identity.dev || stat.ino !== identity.ino) {
|
|
108
|
+
throw new Error(`Odai human-safety continuity directory identity changed during an operation: ${identity.path}`);
|
|
109
|
+
}
|
|
138
110
|
}
|
|
139
|
-
}
|
|
140
111
|
}
|
|
141
|
-
|
|
142
112
|
function readRegularFileNoFollow(path) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
113
|
+
const noFollow = typeof constants.O_NOFOLLOW === "number" ? constants.O_NOFOLLOW : 0;
|
|
114
|
+
let fileDescriptor;
|
|
115
|
+
try {
|
|
116
|
+
fileDescriptor = openSync(path, constants.O_RDONLY | noFollow);
|
|
117
|
+
const stat = fstatSync(fileDescriptor);
|
|
118
|
+
if (!stat.isFile())
|
|
119
|
+
throw new Error(`Odai human-safety continuity store is not a regular file: ${path}`);
|
|
120
|
+
return readFileSync(fileDescriptor, "utf8");
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
if (fileDescriptor !== undefined)
|
|
124
|
+
closeSync(fileDescriptor);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export function resolveHumanSafetyContinuityStorePath(configuredPath = undefined, env = process.env) {
|
|
128
|
+
if (configuredPath !== undefined) {
|
|
129
|
+
if (typeof configuredPath !== "string" || configuredPath.trim() === "") {
|
|
130
|
+
throw new TypeError("human-safety continuity store path must be a non-empty string");
|
|
131
|
+
}
|
|
132
|
+
return resolve(configuredPath.trim());
|
|
133
|
+
}
|
|
134
|
+
const dshHome = typeof env.DSH_HOME === "string" && env.DSH_HOME.trim() !== ""
|
|
135
|
+
? resolve(env.DSH_HOME.trim())
|
|
136
|
+
: resolve(homedir(), ".dsh");
|
|
137
|
+
return resolve(dshHome, "odai", "human-safety-continuity.json");
|
|
138
|
+
}
|
|
168
139
|
export function readHumanSafetyContinuityStore(storePath) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
140
|
+
const identities = assertSafeStorePath(storePath);
|
|
141
|
+
let text;
|
|
142
|
+
try {
|
|
143
|
+
text = readRegularFileNoFollow(storePath);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
assertDirectoryIdentities(identities);
|
|
147
|
+
if (errorCode(error) === "ENOENT")
|
|
148
|
+
return emptyStore();
|
|
149
|
+
throw new Error(`cannot read Odai human-safety continuity ${storePath}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
150
|
+
}
|
|
174
151
|
assertDirectoryIdentities(identities);
|
|
175
|
-
|
|
176
|
-
throw new Error(`cannot read Odai human-safety continuity ${storePath}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
177
|
-
}
|
|
178
|
-
assertDirectoryIdentities(identities);
|
|
179
|
-
let parsed;
|
|
180
|
-
try {
|
|
181
|
-
parsed = JSON.parse(text);
|
|
182
|
-
} catch (error) {
|
|
183
|
-
throw new HumanSafetyContinuityStoreValidationError(`Odai human-safety continuity ${storePath} is not valid JSON`, { cause: error });
|
|
184
|
-
}
|
|
185
|
-
try {
|
|
186
|
-
return validateStore(parsed, `Odai human-safety continuity ${storePath}`);
|
|
187
|
-
} catch (error) {
|
|
188
|
-
throw new HumanSafetyContinuityStoreValidationError(
|
|
189
|
-
`Odai human-safety continuity ${storePath} failed validation: ${error instanceof Error ? error.message : String(error)}`,
|
|
190
|
-
{ cause: error },
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
function writeStore(storePath, store) {
|
|
196
|
-
const value = validateStore(store, "Odai human-safety continuity write");
|
|
197
|
-
const parent = dirname(storePath);
|
|
198
|
-
assertSafeStorePath(storePath);
|
|
199
|
-
mkdirSync(parent, { recursive: true, mode: 0o700 });
|
|
200
|
-
const identities = assertSafeStorePath(storePath);
|
|
201
|
-
const temporary = `${storePath}.tmp-${process.pid}-${randomUUID()}`;
|
|
202
|
-
const noFollow = typeof constants.O_NOFOLLOW === "number" ? constants.O_NOFOLLOW : 0;
|
|
203
|
-
try {
|
|
204
|
-
let fd;
|
|
152
|
+
let parsed;
|
|
205
153
|
try {
|
|
206
|
-
|
|
207
|
-
writeFileSync(fd, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf8" });
|
|
208
|
-
fsyncSync(fd);
|
|
209
|
-
} finally {
|
|
210
|
-
if (fd !== undefined) closeSync(fd);
|
|
154
|
+
parsed = JSON.parse(text);
|
|
211
155
|
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
throw new HumanSafetyContinuityStoreValidationError(`Odai human-safety continuity ${storePath} is not valid JSON`, { cause: error });
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
return validateStore(parsed, `Odai human-safety continuity ${storePath}`);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
throw new HumanSafetyContinuityStoreValidationError(`Odai human-safety continuity ${storePath} failed validation: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function writeStore(storePath, store) {
|
|
167
|
+
const value = validateStore(store, "Odai human-safety continuity write");
|
|
168
|
+
const parent = dirname(storePath);
|
|
212
169
|
assertSafeStorePath(storePath);
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
170
|
+
mkdirSync(parent, { recursive: true, mode: 0o700 });
|
|
171
|
+
const identities = assertSafeStorePath(storePath);
|
|
172
|
+
const temporary = `${storePath}.tmp-${process.pid}-${randomUUID()}`;
|
|
173
|
+
const noFollow = typeof constants.O_NOFOLLOW === "number" ? constants.O_NOFOLLOW : 0;
|
|
174
|
+
try {
|
|
175
|
+
let fileDescriptor;
|
|
176
|
+
try {
|
|
177
|
+
fileDescriptor = openSync(temporary, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | noFollow, 0o600);
|
|
178
|
+
writeFileSync(fileDescriptor, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf8" });
|
|
179
|
+
fsyncSync(fileDescriptor);
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
if (fileDescriptor !== undefined)
|
|
183
|
+
closeSync(fileDescriptor);
|
|
184
|
+
}
|
|
185
|
+
assertSafeStorePath(storePath);
|
|
186
|
+
assertDirectoryIdentities(identities);
|
|
187
|
+
renameSync(temporary, storePath);
|
|
188
|
+
assertDirectoryIdentities(identities);
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
rmSync(temporary, { force: true });
|
|
192
|
+
}
|
|
193
|
+
return value;
|
|
220
194
|
}
|
|
221
|
-
|
|
222
195
|
export function mutateHumanSafetyContinuityStore(storePath, mutate) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
|
|
196
|
+
if (typeof mutate !== "function")
|
|
197
|
+
throw new TypeError("human-safety continuity mutator must be a function");
|
|
198
|
+
const identities = assertSafeStorePath(storePath);
|
|
199
|
+
const releaseLock = acquireOwnedStoreLock(storePath, "Odai human-safety continuity");
|
|
200
|
+
try {
|
|
201
|
+
assertDirectoryIdentities(identities);
|
|
202
|
+
const current = readHumanSafetyContinuityStore(storePath);
|
|
203
|
+
const mutable = {
|
|
204
|
+
schemaVersion: HUMAN_SAFETY_CONTINUITY_SCHEMA_VERSION,
|
|
205
|
+
entries: current.entries.map((entry) => ({ ...entry })),
|
|
206
|
+
};
|
|
207
|
+
const outcome = mutate(mutable);
|
|
208
|
+
if (!outcome || outcome.changed !== true) {
|
|
209
|
+
return Object.freeze({ store: current, ...outcome });
|
|
210
|
+
}
|
|
211
|
+
const store = writeStore(storePath, mutable);
|
|
212
|
+
return Object.freeze({ ...outcome, changed: true, store });
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
releaseLock();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
242
218
|
export function clearHumanSafetyContinuityStore(storePath) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
219
|
+
const identities = assertSafeStorePath(storePath);
|
|
220
|
+
const releaseLock = acquireOwnedStoreLock(storePath, "Odai human-safety continuity");
|
|
221
|
+
try {
|
|
222
|
+
assertDirectoryIdentities(identities);
|
|
223
|
+
const existed = existsSync(storePath);
|
|
224
|
+
rmSync(storePath, { force: true });
|
|
225
|
+
assertDirectoryIdentities(identities);
|
|
226
|
+
return Object.freeze({ changed: existed, store: emptyStore() });
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
releaseLock();
|
|
230
|
+
}
|
|
254
231
|
}
|
|
232
|
+
//# sourceMappingURL=human-safety-continuity-store.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-safety-continuity-store.mjs","sourceRoot":"","sources":["../src/human-safety-continuity-store.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type HumanSafetyContinuityCategory, type HumanSafetyContinuityEntry, type HumanSafetyContinuityStore } from "./human-safety-continuity-store.mjs";
|
|
2
|
+
import type { DshAgent, RuntimeTool } from "./runtime-types.mjs";
|
|
3
|
+
export declare const HUMAN_SAFETY_CONTINUITY_PROMPT: string;
|
|
4
|
+
export interface HumanSafetyContinuityToolOptions {
|
|
5
|
+
storePath: string;
|
|
6
|
+
directUserTextFor?(agent: DshAgent): string | undefined;
|
|
7
|
+
onChanged?(agent: DshAgent, event: HumanSafetyContinuityChangedEvent): void;
|
|
8
|
+
}
|
|
9
|
+
export type HumanSafetyContinuityChangedEvent = {
|
|
10
|
+
action: "add" | "replace" | "remove";
|
|
11
|
+
category: HumanSafetyContinuityCategory;
|
|
12
|
+
entryId: string;
|
|
13
|
+
} | {
|
|
14
|
+
action: "clear";
|
|
15
|
+
};
|
|
16
|
+
export type HumanSafetyContinuityAction = "show" | "export" | "add" | "replace" | "remove" | "clear";
|
|
17
|
+
export type HumanSafetyContinuityStatus = "shown" | "exported" | "added" | "existing" | "replaced" | "removed" | "absent" | "cleared";
|
|
18
|
+
export interface HumanSafetyContinuityResult {
|
|
19
|
+
action: HumanSafetyContinuityAction;
|
|
20
|
+
status: HumanSafetyContinuityStatus;
|
|
21
|
+
record: Readonly<HumanSafetyContinuityStore>;
|
|
22
|
+
entry?: HumanSafetyContinuityEntry;
|
|
23
|
+
exportJson?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function renderHumanSafetyContinuitySection(store: HumanSafetyContinuityStore | undefined): string | undefined;
|
|
26
|
+
export declare function createHumanSafetyContinuityTool(options: HumanSafetyContinuityToolOptions): RuntimeTool<unknown, HumanSafetyContinuityResult>;
|
|
27
|
+
//# sourceMappingURL=human-safety-continuity.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-safety-continuity.d.mts","sourceRoot":"","sources":["../src/human-safety-continuity.mts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAgC,MAAM,qBAAqB,CAAC;AAuB/F,eAAO,MAAM,8BAA8B,QAQ/B,CAAC;AAEb,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iCAAiC,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,MAAM,iCAAiC,GACzC;IAAE,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IAAC,QAAQ,EAAE,6BAA6B,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAExB,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AACrG,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtI,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,2BAA2B,CAAC;IACpC,MAAM,EAAE,2BAA2B,CAAC;IACpC,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuFD,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQpH;AAMD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,WAAW,CAAC,OAAO,EAAE,2BAA2B,CAAC,CA0GnD"}
|