@kashscript/hudhud 0.1.0 → 0.1.1
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/dist/errors.d.ts +29 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -2
- package/dist/errors.js.map +1 -1
- package/dist/exception/index.d.ts +1 -0
- package/dist/exception/index.d.ts.map +1 -1
- package/dist/exception/index.js +3 -0
- package/dist/exception/index.js.map +1 -1
- package/dist/ledger/writer.d.ts +10 -2
- package/dist/ledger/writer.d.ts.map +1 -1
- package/dist/ledger/writer.js +16 -4
- package/dist/ledger/writer.js.map +1 -1
- package/dist/runtime/escalation.d.ts +5 -0
- package/dist/runtime/escalation.d.ts.map +1 -1
- package/dist/runtime/escalation.js +15 -3
- package/dist/runtime/escalation.js.map +1 -1
- package/dist/sop/compiler.d.ts.map +1 -1
- package/dist/sop/compiler.js +2 -2
- package/dist/sop/compiler.js.map +1 -1
- package/dist/sop/service.d.ts +5 -0
- package/dist/sop/service.d.ts.map +1 -1
- package/dist/sop/service.js +25 -6
- package/dist/sop/service.js.map +1 -1
- package/package.json +1 -1
- package/src/errors.ts +27 -2
- package/src/exception/index.ts +3 -0
- package/src/ledger/writer.ts +24 -4
- package/src/runtime/escalation.ts +21 -9
- package/src/sop/compiler.ts +2 -1
- package/src/sop/service.ts +30 -5
package/dist/errors.d.ts
CHANGED
|
@@ -3,9 +3,36 @@ export declare class HudhudError extends Error {
|
|
|
3
3
|
readonly code: string;
|
|
4
4
|
constructor(code: string, message: string);
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
6
|
+
/** Structured diagnostic for a SOP compilation failure. A consuming venture maps
|
|
7
|
+
* this onto its own wire envelope (e.g. an "empty" vs "error" track + a
|
|
8
|
+
* line-indexed cycle diagnostic) — the message alone is lossy. */
|
|
9
|
+
export type SopCompilationDetail = {
|
|
10
|
+
readonly kind: "empty";
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: "no-steps";
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: "invalid-institution-did";
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: "invalid-version";
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: "invalid-input";
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: "cycle";
|
|
21
|
+
/** Node ids on the cycle, in traversal order. */
|
|
22
|
+
readonly cyclePath: ReadonlyArray<string>;
|
|
23
|
+
/** The edge that closes the cycle (`closingFrom` → `closingTo`). */
|
|
24
|
+
readonly closingFrom: string;
|
|
25
|
+
readonly closingTo: string;
|
|
26
|
+
/** 1-indexed source line of the node whose goto closes the cycle, or null
|
|
27
|
+
* if it could not be resolved. */
|
|
28
|
+
readonly lineIndex: number | null;
|
|
29
|
+
};
|
|
30
|
+
/** Thrown when an SOP manual cannot be compiled (cycle, malformed goto, empty).
|
|
31
|
+
* `detail` carries a structured discriminant so a consumer can build a precise
|
|
32
|
+
* wire diagnostic without parsing the message. */
|
|
7
33
|
export declare class SopCompilationError extends HudhudError {
|
|
8
|
-
|
|
34
|
+
readonly detail: SopCompilationDetail | null;
|
|
35
|
+
constructor(message: string, detail?: SopCompilationDetail | null);
|
|
9
36
|
}
|
|
10
37
|
/** Thrown when an MCP tool call exceeds the hard timeout. */
|
|
11
38
|
export declare class McpTimeoutError extends HudhudError {
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAWA,sDAAsD;AACtD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAWA,sDAAsD;AACtD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED;;mEAEmE;AACnE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACpC;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GAClC;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;uCACmC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEN;;mDAEmD;AACnD,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;gBACjC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,oBAAoB,GAAG,IAAW;CAKxE;AAED,6DAA6D;AAC7D,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBACf,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK/C;AAED,wEAAwE;AACxE,MAAM,MAAM,0BAA0B,GAClC,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,qBAAqB,GACrB,iBAAiB,GACjB,cAAc,CAAC;AAEnB;+DAC+D;AAC/D,qBAAa,yBAA0B,SAAQ,WAAW;IACxD,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;gBACzB,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAG,UAAuB;CAM1G;AAED;gFACgF;AAChF,qBAAa,4BAA6B,SAAQ,WAAW;gBAC/C,OAAO,EAAE,MAAM;CAI5B;AAED;;sEAEsE;AACtE,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/errors.js
CHANGED
|
@@ -17,11 +17,15 @@ export class HudhudError extends Error {
|
|
|
17
17
|
this.code = code;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
/** Thrown when an SOP manual cannot be compiled (cycle, malformed goto, empty).
|
|
20
|
+
/** Thrown when an SOP manual cannot be compiled (cycle, malformed goto, empty).
|
|
21
|
+
* `detail` carries a structured discriminant so a consumer can build a precise
|
|
22
|
+
* wire diagnostic without parsing the message. */
|
|
21
23
|
export class SopCompilationError extends HudhudError {
|
|
22
|
-
|
|
24
|
+
detail;
|
|
25
|
+
constructor(message, detail = null) {
|
|
23
26
|
super("SOP_COMPILATION", message);
|
|
24
27
|
this.name = "SopCompilationError";
|
|
28
|
+
this.detail = detail;
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
/** Thrown when an MCP tool call exceeds the hard timeout. */
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,mDAAmD;AACnD,+EAA+E;AAE/E,sDAAsD;AACtD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,mDAAmD;AACnD,+EAA+E;AAE/E,sDAAsD;AACtD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAuBD;;mDAEmD;AACnD,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IACzC,MAAM,CAA8B;IAC7C,YAAY,OAAe,EAAE,SAAsC,IAAI;QACrE,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,6DAA6D;AAC7D,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACrC,SAAS,CAAS;IAC3B,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAWD;+DAC+D;AAC/D,MAAM,OAAO,yBAA0B,SAAQ,WAAW;IAC/C,MAAM,CAA6B;IACnC,KAAK,CAAuB;IACrC,YAAY,MAAkC,EAAE,OAAe,EAAE,QAA8B,UAAU;QACvG,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;gFACgF;AAChF,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IAC3D,YAAY,OAAe;QACzB,KAAK,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;sEAEsE;AACtE,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { ExceptionClassificationError } from "../errors";
|
|
1
2
|
/** The failure classes. No "unclassified": classification is mandatory. */
|
|
2
3
|
export declare const FAILURE_CLASSES: readonly ["judgment", "gap-filling", "ambiguous"];
|
|
3
4
|
export type FailureClass = (typeof FAILURE_CLASSES)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exception/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exception/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AAEzD,2EAA2E;AAC3E,eAAO,MAAM,eAAe,mDAAoD,CAAC;AACjF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;6EAC6E;AAC7E,eAAO,MAAM,mCAAmC,EAAG,oCAA6C,CAAC;AACjG,eAAO,MAAM,uCAAuC,EAAG,4BAAqC,CAAC;AAc7F;sEACsE;AACtE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAWhF;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,4BAA4B,CAAC;CACvD;AAQD;gFACgF;AAChF,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,4BAA4B,EACnC,QAAQ,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,EACnE,IAAI,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACpG,OAAO,CAAC,6BAA6B,CAAC,CA6BxC;AAED,qFAAqF;AACrF,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,6BAA6B,EACrC,iBAAiB,EAAE,UAAU,GAC5B,OAAO,CAAC,OAAO,CAAC,CAelB;AAID,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;IACxD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAAC;CACvF;AAED,qBAAa,oCAAqC,YAAW,4BAA4B;IACvF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IACtD,MAAM,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAG5D,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;IAGhE,MAAM,IAAI,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC;IAGvD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;CAG5F;AAID,eAAO,MAAM,gCAAgC,EAAG,0BAAmC,CAAC;AAEpF,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,6BAA6B,CAAC,CAAC;CAChE;AAED,4EAA4E;AAC5E,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,aAAa,CAAC,6BAA6B,CAAC,EACrD,aAAa,GAAE,MAAiC,GAC/C,oCAAoC,CAEtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACjE;AAQD,oFAAoF;AACpF,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,aAAa,CAAC,6BAA6B,CAAC,GACpD,4BAA4B,CAoB9B"}
|
package/dist/exception/index.js
CHANGED
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
// ============================================================================
|
|
14
14
|
import { signEvent, verifyEvent } from "@kashscript/identity-core";
|
|
15
15
|
import { ExceptionClassificationError } from "../errors";
|
|
16
|
+
// Re-export the error this module throws so a consumer can catch it from the
|
|
17
|
+
// same subpath it imports the mandatory gate from.
|
|
18
|
+
export { ExceptionClassificationError } from "../errors";
|
|
16
19
|
/** The failure classes. No "unclassified": classification is mandatory. */
|
|
17
20
|
export const FAILURE_CLASSES = ["judgment", "gap-filling", "ambiguous"];
|
|
18
21
|
/** DST so a classification signature can't replay as a ledger/attestation sig.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exception/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exception/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ledger/writer.d.ts
CHANGED
|
@@ -10,12 +10,15 @@ export interface HostActorSigner {
|
|
|
10
10
|
readonly actorClass: ActorClass;
|
|
11
11
|
sign(payload: LedgerSignaturePayload): Promise<string>;
|
|
12
12
|
}
|
|
13
|
-
/** Build a HostActorSigner from a raw Ed25519 private key. `actorDid` must be
|
|
14
|
-
* did:kash and be registered
|
|
13
|
+
/** Build a HostActorSigner from a raw Ed25519 private key. `actorDid` must be
|
|
14
|
+
* accepted by `isValidActorDid` (default: canonical did:kash) and be registered
|
|
15
|
+
* in the DidRegistry the service verifies against. */
|
|
15
16
|
export declare function createEd25519HostSigner(opts: {
|
|
16
17
|
readonly actorDid: string;
|
|
17
18
|
readonly actorClass: ActorClass;
|
|
18
19
|
readonly privateKey: Uint8Array;
|
|
20
|
+
/** Override the DID acceptance policy (default: canonical `did:kash`). */
|
|
21
|
+
readonly isValidActorDid?: (did: string) => boolean;
|
|
19
22
|
}): HostActorSigner;
|
|
20
23
|
export interface AppendTransitionLogInput {
|
|
21
24
|
readonly sessionId: string;
|
|
@@ -43,10 +46,15 @@ export interface ForensicLedgerServiceDeps {
|
|
|
43
46
|
readonly didRegistry: DidRegistry;
|
|
44
47
|
/** Required only for `appendActorTransition` (the self-signing path). */
|
|
45
48
|
readonly hostSigner?: HostActorSigner;
|
|
49
|
+
/** DID acceptance policy for `actorDid` (default: canonical `did:kash`).
|
|
50
|
+
* DID-format is an identity-method policy the CONSUMER owns; the ledger's
|
|
51
|
+
* hard gates remain registry-resolution + signature-verification. */
|
|
52
|
+
readonly isValidActorDid?: (did: string) => boolean;
|
|
46
53
|
}
|
|
47
54
|
export declare class ForensicLedgerService {
|
|
48
55
|
private readonly deps;
|
|
49
56
|
constructor(deps: ForensicLedgerServiceDeps);
|
|
57
|
+
private isValidActorDid;
|
|
50
58
|
/** Append a caller-pre-signed transition. @throws LedgerAppendError on any
|
|
51
59
|
* validation / signature / store failure. */
|
|
52
60
|
appendTransitionLog(input: AppendTransitionLogInput): Promise<AppendedLedgerBlock>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/ledger/writer.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAqB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGrH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,aAAa,6EAA8E,CAAC;AACzG,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD;iFACiF;AACjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/ledger/writer.ts"],"names":[],"mappings":"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"}
|
package/dist/ledger/writer.js
CHANGED
|
@@ -16,10 +16,19 @@ import { LedgerAppendError } from "../errors";
|
|
|
16
16
|
import { SessionMutex } from "./mutex";
|
|
17
17
|
import { resolvePreviousBlockHash } from "./store";
|
|
18
18
|
export const ACTOR_CLASSES = ["AGENT", "SYSTEM_KERNEL", "OPERATOR_ADMIN", "COMPLIANCE_AUDITOR"];
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
19
|
+
/** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape
|
|
20
|
+
* (identity-core `DID_KASH_RE` / attest `KASH_DID_PATTERN`). A consumer whose
|
|
21
|
+
* DID method-specific-ids are STRUCTURED (e.g. hierarchical role DIDs such as
|
|
22
|
+
* `did:kash:oreoasis:kernel:host`) injects its own validator — DID-format is an
|
|
23
|
+
* identity-method policy the CONSUMER owns; the ledger's hard gates stay
|
|
24
|
+
* registry-resolution + signature-verification, not string shape. */
|
|
25
|
+
const isCanonicalKashDid = (did) => KASH_DID_PATTERN.test(did);
|
|
26
|
+
/** Build a HostActorSigner from a raw Ed25519 private key. `actorDid` must be
|
|
27
|
+
* accepted by `isValidActorDid` (default: canonical did:kash) and be registered
|
|
28
|
+
* in the DidRegistry the service verifies against. */
|
|
21
29
|
export function createEd25519HostSigner(opts) {
|
|
22
|
-
|
|
30
|
+
const isValidActorDid = opts.isValidActorDid ?? isCanonicalKashDid;
|
|
31
|
+
if (!isValidActorDid(opts.actorDid)) {
|
|
23
32
|
throw new LedgerAppendError("host signer actorDid is not a valid did:kash:… identifier");
|
|
24
33
|
}
|
|
25
34
|
return {
|
|
@@ -33,13 +42,16 @@ export class ForensicLedgerService {
|
|
|
33
42
|
constructor(deps) {
|
|
34
43
|
this.deps = deps;
|
|
35
44
|
}
|
|
45
|
+
isValidActorDid(did) {
|
|
46
|
+
return (this.deps.isValidActorDid ?? isCanonicalKashDid)(did);
|
|
47
|
+
}
|
|
36
48
|
/** Append a caller-pre-signed transition. @throws LedgerAppendError on any
|
|
37
49
|
* validation / signature / store failure. */
|
|
38
50
|
async appendTransitionLog(input) {
|
|
39
51
|
if (typeof input.sessionId !== "string" || input.sessionId.length === 0) {
|
|
40
52
|
throw new LedgerAppendError("sessionId is required");
|
|
41
53
|
}
|
|
42
|
-
if (typeof input.actorDid !== "string" || !
|
|
54
|
+
if (typeof input.actorDid !== "string" || !this.isValidActorDid(input.actorDid)) {
|
|
43
55
|
throw new LedgerAppendError("actorDid must be a valid did:kash:… identifier");
|
|
44
56
|
}
|
|
45
57
|
if (typeof input.signature !== "string" || input.signature.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/ledger/writer.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,qEAAqE;AACrE,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,yEAAyE;AACzE,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,CAAU,CAAC;AAWzG;
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/ledger/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,9 @@ export interface BuildHumanApprovalEnvelopeInput {
|
|
|
26
26
|
readonly publicKey: Uint8Array;
|
|
27
27
|
};
|
|
28
28
|
readonly ttlMs?: number;
|
|
29
|
+
/** Override the DID acceptance policy for agent/operator `did` (default:
|
|
30
|
+
* canonical `did:kash`). */
|
|
31
|
+
readonly isValidDid?: (did: string) => boolean;
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
31
34
|
* Build the two-key `SignedActionEnvelope` that authorizes a resume of a
|
|
@@ -49,6 +52,8 @@ export interface AppendOperatorSignoffInput {
|
|
|
49
52
|
/** MANDATORY classification (required `failureClass`, no "unclassified"). */
|
|
50
53
|
readonly classification: ExceptionClassificationInput;
|
|
51
54
|
readonly exceptionClassificationStore: ExceptionClassificationStore;
|
|
55
|
+
/** Override the DID acceptance policy for operator `did` (default: canonical). */
|
|
56
|
+
readonly isValidDid?: (did: string) => boolean;
|
|
52
57
|
}
|
|
53
58
|
/**
|
|
54
59
|
* Append a SIGNED ledger row recording the operator's sign-off (OPERATOR key,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAsC,oBAAoB,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAOvH,OAAO,KAAK,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE9H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,16 @@ import { PermissionGate, assembleEnvelope, stripDerivedFields, } from "@kashscri
|
|
|
20
20
|
import { NEURON_DST } from "@kashscript/neuron/schemas";
|
|
21
21
|
import { assertFailureClass, buildSignedClassification, } from "../exception";
|
|
22
22
|
import { resolvePreviousBlockHash } from "../ledger/store";
|
|
23
|
+
// Both identities are `did:kash` keys so the operator sign-off is a first-class
|
|
24
|
+
// ledger actor. The two-key guarantee comes from DISTINCTNESS, not a DID
|
|
25
|
+
// namespace: the agent key is the one the host holds; the operator key is
|
|
26
|
+
// SEPARATE, so the host cannot mint the operator (invoker) signature. Enforced
|
|
27
|
+
// below by requiring agent.did ≠ operator.did (their derived DIDs differ because
|
|
28
|
+
// their keys do). The DID-STRING shape is an identity-method policy the consumer
|
|
29
|
+
// owns (`isValidDid`, default canonical); it is NOT a security boundary here.
|
|
30
|
+
/** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape.
|
|
31
|
+
* Consumers with structured DIDs (e.g. `did:kash:operator:…`) inject their own. */
|
|
32
|
+
const isCanonicalKashDid = (did) => KASH_DID_PATTERN.test(did);
|
|
23
33
|
export class EscalationError extends Error {
|
|
24
34
|
code;
|
|
25
35
|
detail;
|
|
@@ -46,10 +56,11 @@ function deriveKashDid(publicKey) {
|
|
|
46
56
|
* operator), so forging human judgment would require the operator private key.
|
|
47
57
|
*/
|
|
48
58
|
export async function buildHumanApprovalEnvelope(input) {
|
|
49
|
-
|
|
59
|
+
const isValidDid = input.isValidDid ?? isCanonicalKashDid;
|
|
60
|
+
if (!isValidDid(input.agent.did)) {
|
|
50
61
|
throw new EscalationError("AGENT_DID_INVALID", "agent.did must be a valid did:kash identifier");
|
|
51
62
|
}
|
|
52
|
-
if (!
|
|
63
|
+
if (!isValidDid(input.operator.did)) {
|
|
53
64
|
throw new EscalationError("OPERATOR_DID_INVALID", "operator.did must be a valid did:kash identifier");
|
|
54
65
|
}
|
|
55
66
|
if (input.agent.did === input.operator.did) {
|
|
@@ -87,7 +98,8 @@ export async function buildHumanApprovalEnvelope(input) {
|
|
|
87
98
|
* The mandatory `failureClass` gate fails-fast before any row is written.
|
|
88
99
|
*/
|
|
89
100
|
export async function appendOperatorSignoff(input) {
|
|
90
|
-
|
|
101
|
+
const isValidDid = input.isValidDid ?? isCanonicalKashDid;
|
|
102
|
+
if (!isValidDid(input.operator.did)) {
|
|
91
103
|
throw new EscalationError("OPERATOR_DID_INVALID", "operator.did must be a valid did:kash identifier");
|
|
92
104
|
}
|
|
93
105
|
assertFailureClass(input.classification.failureClass);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kEAAkE;AAClE,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,kCAAkC;AAClC,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,6EAA6E;AAC7E,+CAA+C;AAC/C,iFAAiF;AACjF,8EAA8E;AAC9E,uCAAuC;AACvC,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/runtime/escalation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;QAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAOD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;QAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAOD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuC5F"}
|
package/dist/sop/compiler.js
CHANGED
|
@@ -22,7 +22,7 @@ const LIST_ITEM_PATTERN = /^\s*(?:\d+[.)]|[-*•])\s+(.+)$/;
|
|
|
22
22
|
export async function compileSopStructural(input) {
|
|
23
23
|
const lines = input.sopText.split(/\r?\n/);
|
|
24
24
|
if (input.sopText.trim().length === 0) {
|
|
25
|
-
throw new SopCompilationError("SOP text is empty or whitespace-only — at least one step required");
|
|
25
|
+
throw new SopCompilationError("SOP text is empty or whitespace-only — at least one step required", { kind: "empty" });
|
|
26
26
|
}
|
|
27
27
|
const nodes = [];
|
|
28
28
|
for (let i = 0; i < lines.length; i++) {
|
|
@@ -32,7 +32,7 @@ export async function compileSopStructural(input) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
if (nodes.length === 0) {
|
|
35
|
-
throw new SopCompilationError("No numbered/bulleted steps detected — structural compiler requires `1.` / `-` / `*` / `•` prefixes");
|
|
35
|
+
throw new SopCompilationError("No numbered/bulleted steps detected — structural compiler requires `1.` / `-` / `*` / `•` prefixes", { kind: "no-steps" });
|
|
36
36
|
}
|
|
37
37
|
const edges = [];
|
|
38
38
|
for (let i = 0; i < nodes.length - 1; i++) {
|
package/dist/sop/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gEAAgE;AAChE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAyBhD,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAE5C,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAc1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAsB;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAAC,mEAAmE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/sop/compiler.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gEAAgE;AAChE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,oEAAoE;AACpE,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAyBhD,MAAM,2BAA2B,GAAG,OAAO,CAAC;AAE5C,oDAAoD;AACpD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAc1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAsB;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAAC,mEAAmE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAC3B,oGAAoG,EACpG,EAAE,IAAI,EAAE,UAAU,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAY;QACvB,KAAK;QACL,KAAK;QACL,IAAI,EAAE;YACJ,YAAY,EAAE,oBAAoB;YAClC,eAAe,EAAE,2BAA2B;YAC5C,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,SAAS;SACV;KACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC"}
|
package/dist/sop/service.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ export interface SopCompilerServiceOptions {
|
|
|
4
4
|
/** Seam for the deferred LLM decomposer wire-up (not yet invoked). */
|
|
5
5
|
readonly llmProvider?: LLMProvider;
|
|
6
6
|
readonly llmModel?: string;
|
|
7
|
+
/** Override the `institutionDid` acceptance policy (default: canonical
|
|
8
|
+
* `did:kash`). A consumer with structured institution DIDs injects its own —
|
|
9
|
+
* DID-string shape is an identity-method policy the consumer owns. */
|
|
10
|
+
readonly isValidInstitutionDid?: (did: string) => boolean;
|
|
7
11
|
}
|
|
8
12
|
export interface CompiledCorporateManual {
|
|
9
13
|
readonly taskDag: TaskDag;
|
|
@@ -13,6 +17,7 @@ export interface CompiledCorporateManual {
|
|
|
13
17
|
}
|
|
14
18
|
export declare class SopCompilerService {
|
|
15
19
|
private readonly llmBackendActive;
|
|
20
|
+
private readonly isValidInstitutionDid;
|
|
16
21
|
constructor(opts?: SopCompilerServiceOptions);
|
|
17
22
|
/** Whether an LLM provider seam is plumbed. */
|
|
18
23
|
hasLlmBackend(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;2EAEuE;IACvE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D;AAKD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAOD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA2B;gBAErD,IAAI,GAAE,yBAA8B;IAKhD,+CAA+C;IACxC,aAAa,IAAI,OAAO;IAI/B;uEACmE;IACtD,sBAAsB,CACjC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC;CAoDpC;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;kFACkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAmB3F;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;4EAC4E;AAC5E,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EACjC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,WAAW,GAAG,IAAI,CAmDpB"}
|
package/dist/sop/service.js
CHANGED
|
@@ -11,14 +11,18 @@
|
|
|
11
11
|
import { KASH_DID_PATTERN } from "@kashscript/attest";
|
|
12
12
|
import { SopCompilationError } from "../errors";
|
|
13
13
|
import { compileSopStructural } from "./compiler";
|
|
14
|
+
/** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape. */
|
|
15
|
+
const isCanonicalKashDid = (did) => KASH_DID_PATTERN.test(did);
|
|
14
16
|
/** Match `goto N`, `goto step N`, `go to step N`, `→ step N`. Captures `N`. */
|
|
15
17
|
const GOTO_MARKER_PATTERN = /(?:goto|go\s+to|→)\s*(?:step\s*)?(\d{1,4})/gi;
|
|
16
18
|
/** Semver MAJOR.MINOR.PATCH. */
|
|
17
19
|
const SEMVER_PATTERN = /^\d+\.\d+\.\d+$/;
|
|
18
20
|
export class SopCompilerService {
|
|
19
21
|
llmBackendActive;
|
|
22
|
+
isValidInstitutionDid;
|
|
20
23
|
constructor(opts = {}) {
|
|
21
24
|
this.llmBackendActive = opts.llmProvider !== undefined;
|
|
25
|
+
this.isValidInstitutionDid = opts.isValidInstitutionDid ?? isCanonicalKashDid;
|
|
22
26
|
}
|
|
23
27
|
/** Whether an LLM provider seam is plumbed. */
|
|
24
28
|
hasLlmBackend() {
|
|
@@ -28,16 +32,22 @@ export class SopCompilerService {
|
|
|
28
32
|
* @throws SopCompilationError on nil / empty / cyclical input. */
|
|
29
33
|
async compileCorporateManual(institutionDid, rawText, version) {
|
|
30
34
|
if (typeof institutionDid !== "string" || institutionDid.length === 0) {
|
|
31
|
-
throw new SopCompilationError("institutionDid is required (non-empty did:kash:… identifier)"
|
|
35
|
+
throw new SopCompilationError("institutionDid is required (non-empty did:kash:… identifier)", {
|
|
36
|
+
kind: "invalid-institution-did",
|
|
37
|
+
});
|
|
32
38
|
}
|
|
33
|
-
if (!
|
|
34
|
-
throw new SopCompilationError("institutionDid is not a valid did:kash:… identifier"
|
|
39
|
+
if (!this.isValidInstitutionDid(institutionDid)) {
|
|
40
|
+
throw new SopCompilationError("institutionDid is not a valid did:kash:… identifier", {
|
|
41
|
+
kind: "invalid-institution-did",
|
|
42
|
+
});
|
|
35
43
|
}
|
|
36
44
|
if (typeof version !== "string" || version.length === 0 || !SEMVER_PATTERN.test(version)) {
|
|
37
|
-
throw new SopCompilationError("version must be a semver MAJOR.MINOR.PATCH string"
|
|
45
|
+
throw new SopCompilationError("version must be a semver MAJOR.MINOR.PATCH string", {
|
|
46
|
+
kind: "invalid-version",
|
|
47
|
+
});
|
|
38
48
|
}
|
|
39
49
|
if (typeof rawText !== "string") {
|
|
40
|
-
throw new SopCompilationError("rawText is required and must be a string");
|
|
50
|
+
throw new SopCompilationError("rawText is required and must be a string", { kind: "invalid-input" });
|
|
41
51
|
}
|
|
42
52
|
// Structural compile (throws SopCompilationError on empty / no steps).
|
|
43
53
|
const { taskDag: structural, sopSha256 } = await compileSopStructural({
|
|
@@ -51,7 +61,16 @@ export class SopCompilerService {
|
|
|
51
61
|
];
|
|
52
62
|
const cycle = detectCycle(structural.nodes, allEdges);
|
|
53
63
|
if (cycle !== null) {
|
|
54
|
-
|
|
64
|
+
// The offending goto lives on the source line of the node whose edge
|
|
65
|
+
// closes the cycle — surface it so a consumer can point at the raw line.
|
|
66
|
+
const closingNode = structural.nodes.find((n) => n.id === cycle.closingFrom);
|
|
67
|
+
throw new SopCompilationError(`SOP TaskDAG contains a cycle: ${cycle.path.join(" → ")} (closing edge ${cycle.closingFrom} → ${cycle.closingTo})`, {
|
|
68
|
+
kind: "cycle",
|
|
69
|
+
cyclePath: cycle.path,
|
|
70
|
+
closingFrom: cycle.closingFrom,
|
|
71
|
+
closingTo: cycle.closingTo,
|
|
72
|
+
lineIndex: closingNode?.sourceLine ?? null,
|
|
73
|
+
});
|
|
55
74
|
}
|
|
56
75
|
const taskDag = { nodes: structural.nodes, edges: allEdges, meta: structural.meta };
|
|
57
76
|
return { taskDag, sopSha256, institutionDid, version };
|
package/dist/sop/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,iCAAiC;AACjC,+EAA+E;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/sop/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kashscript/hudhud",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "The Agent Protocol — the accountable agent runtime. SOP compiler, MCP allowlist + circuit breaker, PII-redaction interceptor, a signed action ledger + forensic scan (on @kashscript/attest), exception classification, AIUC-1 work certificates, DID registry, and a neuron-kernel work runtime. Agent auth via @kashscript/identity-server MCP OAuth 2.1 tokens. Ventures import hudhud, never raw neuron. Commercial (SSLA Schedule B).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
package/src/errors.ts
CHANGED
|
@@ -19,11 +19,36 @@ export class HudhudError extends Error {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
/**
|
|
22
|
+
/** Structured diagnostic for a SOP compilation failure. A consuming venture maps
|
|
23
|
+
* this onto its own wire envelope (e.g. an "empty" vs "error" track + a
|
|
24
|
+
* line-indexed cycle diagnostic) — the message alone is lossy. */
|
|
25
|
+
export type SopCompilationDetail =
|
|
26
|
+
| { readonly kind: "empty" }
|
|
27
|
+
| { readonly kind: "no-steps" }
|
|
28
|
+
| { readonly kind: "invalid-institution-did" }
|
|
29
|
+
| { readonly kind: "invalid-version" }
|
|
30
|
+
| { readonly kind: "invalid-input" }
|
|
31
|
+
| {
|
|
32
|
+
readonly kind: "cycle";
|
|
33
|
+
/** Node ids on the cycle, in traversal order. */
|
|
34
|
+
readonly cyclePath: ReadonlyArray<string>;
|
|
35
|
+
/** The edge that closes the cycle (`closingFrom` → `closingTo`). */
|
|
36
|
+
readonly closingFrom: string;
|
|
37
|
+
readonly closingTo: string;
|
|
38
|
+
/** 1-indexed source line of the node whose goto closes the cycle, or null
|
|
39
|
+
* if it could not be resolved. */
|
|
40
|
+
readonly lineIndex: number | null;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/** Thrown when an SOP manual cannot be compiled (cycle, malformed goto, empty).
|
|
44
|
+
* `detail` carries a structured discriminant so a consumer can build a precise
|
|
45
|
+
* wire diagnostic without parsing the message. */
|
|
23
46
|
export class SopCompilationError extends HudhudError {
|
|
24
|
-
|
|
47
|
+
readonly detail: SopCompilationDetail | null;
|
|
48
|
+
constructor(message: string, detail: SopCompilationDetail | null = null) {
|
|
25
49
|
super("SOP_COMPILATION", message);
|
|
26
50
|
this.name = "SopCompilationError";
|
|
51
|
+
this.detail = detail;
|
|
27
52
|
}
|
|
28
53
|
}
|
|
29
54
|
|
package/src/exception/index.ts
CHANGED
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
|
|
15
15
|
import { signEvent, verifyEvent } from "@kashscript/identity-core";
|
|
16
16
|
import { ExceptionClassificationError } from "../errors";
|
|
17
|
+
// Re-export the error this module throws so a consumer can catch it from the
|
|
18
|
+
// same subpath it imports the mandatory gate from.
|
|
19
|
+
export { ExceptionClassificationError } from "../errors";
|
|
17
20
|
|
|
18
21
|
/** The failure classes. No "unclassified": classification is mandatory. */
|
|
19
22
|
export const FAILURE_CLASSES = ["judgment", "gap-filling", "ambiguous"] as const;
|
package/src/ledger/writer.ts
CHANGED
|
@@ -38,14 +38,26 @@ export interface HostActorSigner {
|
|
|
38
38
|
sign(payload: LedgerSignaturePayload): Promise<string>;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
41
|
+
/** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape
|
|
42
|
+
* (identity-core `DID_KASH_RE` / attest `KASH_DID_PATTERN`). A consumer whose
|
|
43
|
+
* DID method-specific-ids are STRUCTURED (e.g. hierarchical role DIDs such as
|
|
44
|
+
* `did:kash:oreoasis:kernel:host`) injects its own validator — DID-format is an
|
|
45
|
+
* identity-method policy the CONSUMER owns; the ledger's hard gates stay
|
|
46
|
+
* registry-resolution + signature-verification, not string shape. */
|
|
47
|
+
const isCanonicalKashDid = (did: string): boolean => KASH_DID_PATTERN.test(did);
|
|
48
|
+
|
|
49
|
+
/** Build a HostActorSigner from a raw Ed25519 private key. `actorDid` must be
|
|
50
|
+
* accepted by `isValidActorDid` (default: canonical did:kash) and be registered
|
|
51
|
+
* in the DidRegistry the service verifies against. */
|
|
43
52
|
export function createEd25519HostSigner(opts: {
|
|
44
53
|
readonly actorDid: string;
|
|
45
54
|
readonly actorClass: ActorClass;
|
|
46
55
|
readonly privateKey: Uint8Array;
|
|
56
|
+
/** Override the DID acceptance policy (default: canonical `did:kash`). */
|
|
57
|
+
readonly isValidActorDid?: (did: string) => boolean;
|
|
47
58
|
}): HostActorSigner {
|
|
48
|
-
|
|
59
|
+
const isValidActorDid = opts.isValidActorDid ?? isCanonicalKashDid;
|
|
60
|
+
if (!isValidActorDid(opts.actorDid)) {
|
|
49
61
|
throw new LedgerAppendError("host signer actorDid is not a valid did:kash:… identifier");
|
|
50
62
|
}
|
|
51
63
|
return {
|
|
@@ -83,18 +95,26 @@ export interface ForensicLedgerServiceDeps {
|
|
|
83
95
|
readonly didRegistry: DidRegistry;
|
|
84
96
|
/** Required only for `appendActorTransition` (the self-signing path). */
|
|
85
97
|
readonly hostSigner?: HostActorSigner;
|
|
98
|
+
/** DID acceptance policy for `actorDid` (default: canonical `did:kash`).
|
|
99
|
+
* DID-format is an identity-method policy the CONSUMER owns; the ledger's
|
|
100
|
+
* hard gates remain registry-resolution + signature-verification. */
|
|
101
|
+
readonly isValidActorDid?: (did: string) => boolean;
|
|
86
102
|
}
|
|
87
103
|
|
|
88
104
|
export class ForensicLedgerService {
|
|
89
105
|
constructor(private readonly deps: ForensicLedgerServiceDeps) {}
|
|
90
106
|
|
|
107
|
+
private isValidActorDid(did: string): boolean {
|
|
108
|
+
return (this.deps.isValidActorDid ?? isCanonicalKashDid)(did);
|
|
109
|
+
}
|
|
110
|
+
|
|
91
111
|
/** Append a caller-pre-signed transition. @throws LedgerAppendError on any
|
|
92
112
|
* validation / signature / store failure. */
|
|
93
113
|
async appendTransitionLog(input: AppendTransitionLogInput): Promise<AppendedLedgerBlock> {
|
|
94
114
|
if (typeof input.sessionId !== "string" || input.sessionId.length === 0) {
|
|
95
115
|
throw new LedgerAppendError("sessionId is required");
|
|
96
116
|
}
|
|
97
|
-
if (typeof input.actorDid !== "string" || !
|
|
117
|
+
if (typeof input.actorDid !== "string" || !this.isValidActorDid(input.actorDid)) {
|
|
98
118
|
throw new LedgerAppendError("actorDid must be a valid did:kash:… identifier");
|
|
99
119
|
}
|
|
100
120
|
if (typeof input.signature !== "string" || input.signature.length === 0) {
|
|
@@ -34,12 +34,17 @@ import { resolvePreviousBlockHash } from "../ledger/store";
|
|
|
34
34
|
import type { LedgerStore } from "../ledger/store";
|
|
35
35
|
import type { ForensicLedgerService } from "../ledger/writer";
|
|
36
36
|
|
|
37
|
-
// Both identities are
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
37
|
+
// Both identities are `did:kash` keys so the operator sign-off is a first-class
|
|
38
|
+
// ledger actor. The two-key guarantee comes from DISTINCTNESS, not a DID
|
|
39
|
+
// namespace: the agent key is the one the host holds; the operator key is
|
|
40
|
+
// SEPARATE, so the host cannot mint the operator (invoker) signature. Enforced
|
|
41
|
+
// below by requiring agent.did ≠ operator.did (their derived DIDs differ because
|
|
42
|
+
// their keys do). The DID-STRING shape is an identity-method policy the consumer
|
|
43
|
+
// owns (`isValidDid`, default canonical); it is NOT a security boundary here.
|
|
44
|
+
|
|
45
|
+
/** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape.
|
|
46
|
+
* Consumers with structured DIDs (e.g. `did:kash:operator:…`) inject their own. */
|
|
47
|
+
const isCanonicalKashDid = (did: string): boolean => KASH_DID_PATTERN.test(did);
|
|
43
48
|
|
|
44
49
|
export type EscalationErrorCode =
|
|
45
50
|
| "AGENT_DID_INVALID"
|
|
@@ -80,6 +85,9 @@ export interface BuildHumanApprovalEnvelopeInput {
|
|
|
80
85
|
/** The OPERATOR identity — the SEPARATE human key. */
|
|
81
86
|
readonly operator: { readonly did: string; readonly privateKey: Uint8Array; readonly publicKey: Uint8Array };
|
|
82
87
|
readonly ttlMs?: number;
|
|
88
|
+
/** Override the DID acceptance policy for agent/operator `did` (default:
|
|
89
|
+
* canonical `did:kash`). */
|
|
90
|
+
readonly isValidDid?: (did: string) => boolean;
|
|
83
91
|
}
|
|
84
92
|
|
|
85
93
|
/**
|
|
@@ -88,10 +96,11 @@ export interface BuildHumanApprovalEnvelopeInput {
|
|
|
88
96
|
* operator), so forging human judgment would require the operator private key.
|
|
89
97
|
*/
|
|
90
98
|
export async function buildHumanApprovalEnvelope(input: BuildHumanApprovalEnvelopeInput): Promise<SignedActionEnvelope> {
|
|
91
|
-
|
|
99
|
+
const isValidDid = input.isValidDid ?? isCanonicalKashDid;
|
|
100
|
+
if (!isValidDid(input.agent.did)) {
|
|
92
101
|
throw new EscalationError("AGENT_DID_INVALID", "agent.did must be a valid did:kash identifier");
|
|
93
102
|
}
|
|
94
|
-
if (!
|
|
103
|
+
if (!isValidDid(input.operator.did)) {
|
|
95
104
|
throw new EscalationError("OPERATOR_DID_INVALID", "operator.did must be a valid did:kash identifier");
|
|
96
105
|
}
|
|
97
106
|
if (input.agent.did === input.operator.did) {
|
|
@@ -145,6 +154,8 @@ export interface AppendOperatorSignoffInput {
|
|
|
145
154
|
/** MANDATORY classification (required `failureClass`, no "unclassified"). */
|
|
146
155
|
readonly classification: ExceptionClassificationInput;
|
|
147
156
|
readonly exceptionClassificationStore: ExceptionClassificationStore;
|
|
157
|
+
/** Override the DID acceptance policy for operator `did` (default: canonical). */
|
|
158
|
+
readonly isValidDid?: (did: string) => boolean;
|
|
148
159
|
}
|
|
149
160
|
|
|
150
161
|
/**
|
|
@@ -155,7 +166,8 @@ export interface AppendOperatorSignoffInput {
|
|
|
155
166
|
export async function appendOperatorSignoff(
|
|
156
167
|
input: AppendOperatorSignoffInput,
|
|
157
168
|
): Promise<{ stepIndex: number; classification: ExceptionClassificationRecord }> {
|
|
158
|
-
|
|
169
|
+
const isValidDid = input.isValidDid ?? isCanonicalKashDid;
|
|
170
|
+
if (!isValidDid(input.operator.did)) {
|
|
159
171
|
throw new EscalationError("OPERATOR_DID_INVALID", "operator.did must be a valid did:kash identifier");
|
|
160
172
|
}
|
|
161
173
|
assertFailureClass(input.classification.failureClass);
|
package/src/sop/compiler.ts
CHANGED
|
@@ -62,7 +62,7 @@ export async function compileSopStructural(input: CompileSopInput): Promise<Comp
|
|
|
62
62
|
const lines = input.sopText.split(/\r?\n/);
|
|
63
63
|
|
|
64
64
|
if (input.sopText.trim().length === 0) {
|
|
65
|
-
throw new SopCompilationError("SOP text is empty or whitespace-only — at least one step required");
|
|
65
|
+
throw new SopCompilationError("SOP text is empty or whitespace-only — at least one step required", { kind: "empty" });
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
const nodes: TaskDagNode[] = [];
|
|
@@ -76,6 +76,7 @@ export async function compileSopStructural(input: CompileSopInput): Promise<Comp
|
|
|
76
76
|
if (nodes.length === 0) {
|
|
77
77
|
throw new SopCompilationError(
|
|
78
78
|
"No numbered/bulleted steps detected — structural compiler requires `1.` / `-` / `*` / `•` prefixes",
|
|
79
|
+
{ kind: "no-steps" },
|
|
79
80
|
);
|
|
80
81
|
}
|
|
81
82
|
|
package/src/sop/service.ts
CHANGED
|
@@ -20,8 +20,15 @@ export interface SopCompilerServiceOptions {
|
|
|
20
20
|
/** Seam for the deferred LLM decomposer wire-up (not yet invoked). */
|
|
21
21
|
readonly llmProvider?: LLMProvider;
|
|
22
22
|
readonly llmModel?: string;
|
|
23
|
+
/** Override the `institutionDid` acceptance policy (default: canonical
|
|
24
|
+
* `did:kash`). A consumer with structured institution DIDs injects its own —
|
|
25
|
+
* DID-string shape is an identity-method policy the consumer owns. */
|
|
26
|
+
readonly isValidInstitutionDid?: (did: string) => boolean;
|
|
23
27
|
}
|
|
24
28
|
|
|
29
|
+
/** Default DID acceptance policy: the canonical `did:kash:<base58btc>` shape. */
|
|
30
|
+
const isCanonicalKashDid = (did: string): boolean => KASH_DID_PATTERN.test(did);
|
|
31
|
+
|
|
25
32
|
export interface CompiledCorporateManual {
|
|
26
33
|
readonly taskDag: TaskDag;
|
|
27
34
|
readonly sopSha256: string;
|
|
@@ -36,9 +43,11 @@ const SEMVER_PATTERN = /^\d+\.\d+\.\d+$/;
|
|
|
36
43
|
|
|
37
44
|
export class SopCompilerService {
|
|
38
45
|
private readonly llmBackendActive: boolean;
|
|
46
|
+
private readonly isValidInstitutionDid: (did: string) => boolean;
|
|
39
47
|
|
|
40
48
|
constructor(opts: SopCompilerServiceOptions = {}) {
|
|
41
49
|
this.llmBackendActive = opts.llmProvider !== undefined;
|
|
50
|
+
this.isValidInstitutionDid = opts.isValidInstitutionDid ?? isCanonicalKashDid;
|
|
42
51
|
}
|
|
43
52
|
|
|
44
53
|
/** Whether an LLM provider seam is plumbed. */
|
|
@@ -54,16 +63,22 @@ export class SopCompilerService {
|
|
|
54
63
|
version: string,
|
|
55
64
|
): Promise<CompiledCorporateManual> {
|
|
56
65
|
if (typeof institutionDid !== "string" || institutionDid.length === 0) {
|
|
57
|
-
throw new SopCompilationError("institutionDid is required (non-empty did:kash:… identifier)"
|
|
66
|
+
throw new SopCompilationError("institutionDid is required (non-empty did:kash:… identifier)", {
|
|
67
|
+
kind: "invalid-institution-did",
|
|
68
|
+
});
|
|
58
69
|
}
|
|
59
|
-
if (!
|
|
60
|
-
throw new SopCompilationError("institutionDid is not a valid did:kash:… identifier"
|
|
70
|
+
if (!this.isValidInstitutionDid(institutionDid)) {
|
|
71
|
+
throw new SopCompilationError("institutionDid is not a valid did:kash:… identifier", {
|
|
72
|
+
kind: "invalid-institution-did",
|
|
73
|
+
});
|
|
61
74
|
}
|
|
62
75
|
if (typeof version !== "string" || version.length === 0 || !SEMVER_PATTERN.test(version)) {
|
|
63
|
-
throw new SopCompilationError("version must be a semver MAJOR.MINOR.PATCH string"
|
|
76
|
+
throw new SopCompilationError("version must be a semver MAJOR.MINOR.PATCH string", {
|
|
77
|
+
kind: "invalid-version",
|
|
78
|
+
});
|
|
64
79
|
}
|
|
65
80
|
if (typeof rawText !== "string") {
|
|
66
|
-
throw new SopCompilationError("rawText is required and must be a string");
|
|
81
|
+
throw new SopCompilationError("rawText is required and must be a string", { kind: "invalid-input" });
|
|
67
82
|
}
|
|
68
83
|
|
|
69
84
|
// Structural compile (throws SopCompilationError on empty / no steps).
|
|
@@ -80,8 +95,18 @@ export class SopCompilerService {
|
|
|
80
95
|
|
|
81
96
|
const cycle = detectCycle(structural.nodes, allEdges);
|
|
82
97
|
if (cycle !== null) {
|
|
98
|
+
// The offending goto lives on the source line of the node whose edge
|
|
99
|
+
// closes the cycle — surface it so a consumer can point at the raw line.
|
|
100
|
+
const closingNode = structural.nodes.find((n) => n.id === cycle.closingFrom);
|
|
83
101
|
throw new SopCompilationError(
|
|
84
102
|
`SOP TaskDAG contains a cycle: ${cycle.path.join(" → ")} (closing edge ${cycle.closingFrom} → ${cycle.closingTo})`,
|
|
103
|
+
{
|
|
104
|
+
kind: "cycle",
|
|
105
|
+
cyclePath: cycle.path,
|
|
106
|
+
closingFrom: cycle.closingFrom,
|
|
107
|
+
closingTo: cycle.closingTo,
|
|
108
|
+
lineIndex: closingNode?.sourceLine ?? null,
|
|
109
|
+
},
|
|
85
110
|
);
|
|
86
111
|
}
|
|
87
112
|
|