@intentic/base 1.231.0 → 1.233.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/README.md CHANGED
@@ -1,12 +1,15 @@
1
1
  # @intentic/base
2
2
 
3
- The runtime primitives every tier shares: the `when` condition language, disposal, and the async schedulers.
3
+ The runtime primitives every tier shares: the `when` condition language, disposal, the async schedulers, and
4
+ the outside-text neutralizer.
4
5
 
5
- Nothing in here knows what this product is. That is the point: each of the three modules replaced a decision
6
+ Almost nothing in here knows what this product is. That is the point: each module replaced a decision
6
7
  that had been made independently, and differently, in the daemon and in the web app, where the copies could
7
- only ever drift apart. There is no barrel export: a consumer imports the module it needs
8
- (`@intentic/base/when`), because these three have nothing to do with each other and a package that offers them
9
- as one thing invites being treated as a junk drawer.
8
+ only ever drift apart. `outside-text` is the one deliberate exception — it IS product vocabulary (the
9
+ untrusted-content envelope), and it sits here precisely because three separate writers (the daemon's seams,
10
+ webq's saved pages, fileq's sidecars) must speak it byte-identically. There is no barrel export: a consumer
11
+ imports the module it needs (`@intentic/base/when`), because these modules have nothing to do with each other
12
+ and a package that offers them as one thing invites being treated as a junk drawer.
10
13
 
11
14
  ## Responsibilities
12
15
 
@@ -17,6 +20,11 @@ as one thing invites being treated as a junk drawer.
17
20
  - **`lifecycle`**: teardown as structure rather than as a list somebody maintains. A store is registered into
18
21
  where things are created and disposed once; it keeps going past a member that throws and reports the failures
19
22
  together, so one bad stop cannot strand the ports and child processes queued behind it.
23
+ - **`outside-text`**: the untrusted-content envelope (`wrapOutsideContent`) and the marker neutralizer
24
+ (`neutralizeOutsideText`) that makes it trustworthy: envelope forgeries, harness control tags and model
25
+ reserved tokens are folded (homoglyphs, zero-width characters) and replaced before content is sealed or
26
+ written to disk. Shared because the daemon's seams, webq's saved pages and fileq's derived sidecars must all
27
+ neutralize identically — a drifted copy is a working forgery.
20
28
  - **`async`**: the four shapes of "don't do that again yet", named so the choice between them is visible:
21
29
  `Delayer` restarts its clock on every call, `Coalescer` opens a window on the first call and lets later ones
22
30
  join it, `SingleFlight` shares one run per key among concurrent callers, and `retry` is the loop with the
package/dist/async.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type IDisposable } from "./lifecycle.js";
1
+ import type { IDisposable } from "./lifecycle.js";
2
2
  export declare class Delayer<T> implements IDisposable {
3
3
  private readonly delay;
4
4
  private handle;
@@ -1 +1 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA6BlD,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,WAAW;IAO9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IANlC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,OAAO,CAEC;IAChB,OAAO,CAAC,IAAI,CAAqC;IAEjD,YAA6B,KAAK,EAAE,MAAM,EAAI;IAE9C,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAyB9C;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAMD,MAAM,IAAI,IAAI,CAOb;IAED,OAAO,IAAI,IAAI,CAEd;CACJ;AAMD,qBAAa,SAAS,CAAC,CAAC,CAAE,YAAW,WAAW;IAKxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAL1B,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,KAAK,CAAW;IAExB,YACqB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,EACrD;IAKJ,QAAQ,CAAC,GAAG,aAAc,SAAS,CAAC,EAAE,KAAG,IAAI,CAU3C;IAEF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAID,QAAQ,IAAI,IAAI,CAWf;IAED,OAAO,IAAI,IAAI,CAMd;CACJ;AAUD,qBAAa,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAU9C;IAMD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAErC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,OAAO,IAAI,IAAI,CAEd;CACJ;AAID,eAAO,MAAM,KAAK,GAAU,CAAC,QAAQ,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,CAAC,CAejG,CAAC"}
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA6BlD,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,WAAW;IAO9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IANlC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,OAAO,CAEC;IAChB,OAAO,CAAC,IAAI,CAAqC;IAEjD,YAA6B,KAAK,EAAE,MAAM,EAAI;IAE9C,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAyB9C;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAMD,MAAM,IAAI,IAAI,CAOb;IAED,OAAO,IAAI,IAAI,CAEd;CACJ;AAMD,qBAAa,SAAS,CAAC,CAAC,CAAE,YAAW,WAAW;IAKxC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAL1B,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,KAAK,CAAW;IAExB,YACqB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,EACrD;IAKJ,QAAQ,CAAC,GAAG,aAAc,SAAS,CAAC,EAAE,KAAG,IAAI,CAU3C;IAEF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAID,QAAQ,IAAI,IAAI,CAWf;IAED,OAAO,IAAI,IAAI,CAMd;CACJ;AAUD,qBAAa,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAU9C;IAMD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAErC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,OAAO,IAAI,IAAI,CAEd;CACJ;AAID,eAAO,MAAM,KAAK,GAAU,CAAC,QAAQ,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,CAAC,CAejG,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface OutsideMeta {
2
+ readonly source: string;
3
+ readonly from?: string;
4
+ }
5
+ export declare const NEUTRALIZED = "[marker removed]";
6
+ export declare const neutralizeOutsideText: (body: string) => string;
7
+ export declare const wrapOutsideContent: (body: string, meta: OutsideMeta) => string;
8
+ //# sourceMappingURL=outside-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outside-text.d.ts","sourceRoot":"","sources":["../src/outside-text.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,WAAW;IAGxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AA6ED,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAmE9C,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,MA2BpD,CAAC;AAYF,eAAO,MAAM,kBAAkB,SAAU,MAAM,QAAQ,WAAW,KAAG,MAMpE,CAAC"}
@@ -0,0 +1,133 @@
1
+ const TAG = "untrusted-content";
2
+ const IGNORABLE = new Set([0x200b, 0x200c, 0x200d, 0x2060, 0xfeff, 0x00ad]);
3
+ const ANGLE = {
4
+ 0xff1c: "<",
5
+ 0xff1e: ">",
6
+ 0x2329: "<",
7
+ 0x232a: ">",
8
+ 0x3008: "<",
9
+ 0x3009: ">",
10
+ 0x2039: "<",
11
+ 0x203a: ">",
12
+ 0x27e8: "<",
13
+ 0x27e9: ">",
14
+ 0xfe64: "<",
15
+ 0xfe65: ">",
16
+ 0x00ab: "<",
17
+ 0x00bb: ">",
18
+ 0x300a: "<",
19
+ 0x300b: ">",
20
+ 0x27ea: "<",
21
+ 0x27eb: ">",
22
+ 0x27ec: "<",
23
+ 0x27ed: ">",
24
+ 0x27ee: "<",
25
+ 0x27ef: ">",
26
+ 0x276c: "<",
27
+ 0x276d: ">",
28
+ 0x276e: "<",
29
+ 0x276f: ">",
30
+ 0x02c2: "<",
31
+ 0x02c3: ">",
32
+ };
33
+ const FULLWIDTH_OFFSET = 0xfee0;
34
+ const foldChar = (code) => {
35
+ if ((code >= 0xff21 && code <= 0xff3a) || (code >= 0xff41 && code <= 0xff5a)) {
36
+ return String.fromCharCode(code - FULLWIDTH_OFFSET);
37
+ }
38
+ return ANGLE[code];
39
+ };
40
+ const fold = (input) => {
41
+ let text = "";
42
+ const starts = [];
43
+ const ends = [];
44
+ for (let i = 0; i < input.length; i++) {
45
+ const code = input.charCodeAt(i);
46
+ if (IGNORABLE.has(code)) {
47
+ continue;
48
+ }
49
+ text += foldChar(code) ?? input[i];
50
+ starts.push(i);
51
+ ends.push(i + 1);
52
+ }
53
+ return { text, starts, ends };
54
+ };
55
+ export const NEUTRALIZED = "[marker removed]";
56
+ const MARKER = /<\s*\/?\s*untrusted[\s_-]+content\b[^>]*>/gi;
57
+ const MARKER_TAIL = /<\s*\/?\s*untrusted[\s_-]+content\b[^>]*$/i;
58
+ const CONTROL_TAGS = ["system-reminder", "task-notification", "command-name", "command-message", "command-args", "local-command-stdout"];
59
+ const CONTROL = new RegExp(String.raw `<\s*/?\s*(?:${CONTROL_TAGS.join("|")})\b[^>]*>`, "gi");
60
+ const SPECIAL_TOKENS = [
61
+ "<|im_start|>",
62
+ "<|im_end|>",
63
+ "<|endoftext|>",
64
+ "<|begin_of_text|>",
65
+ "<|end_of_text|>",
66
+ "<|start_header_id|>",
67
+ "<|end_header_id|>",
68
+ "<|eot_id|>",
69
+ "<|python_tag|>",
70
+ "<|eom_id|>",
71
+ "[INST]",
72
+ "[/INST]",
73
+ "<<SYS>>",
74
+ "<</SYS>>",
75
+ "<s>",
76
+ "</s>",
77
+ "<|channel|>",
78
+ "<|message|>",
79
+ "<|return|>",
80
+ "<|call|>",
81
+ "<start_of_turn>",
82
+ "<end_of_turn>",
83
+ ];
84
+ const RESERVED_TOKEN = /<\|reserved_special_token_\d+\|>/g;
85
+ const replaceFolded = (original, folded, pattern) => {
86
+ pattern.lastIndex = 0;
87
+ let out = "";
88
+ let cursor = 0;
89
+ for (const match of folded.text.matchAll(pattern)) {
90
+ const start = folded.starts[match.index] ?? match.index;
91
+ const last = match.index + match[0].length - 1;
92
+ const end = folded.ends[last] ?? last + 1;
93
+ if (start < cursor) {
94
+ continue;
95
+ }
96
+ out += original.slice(cursor, start) + NEUTRALIZED;
97
+ cursor = end;
98
+ }
99
+ return out + original.slice(cursor);
100
+ };
101
+ export const neutralizeOutsideText = (body) => {
102
+ let text = body;
103
+ for (const pattern of [MARKER, CONTROL]) {
104
+ const folded = fold(text);
105
+ pattern.lastIndex = 0;
106
+ if (pattern.test(folded.text)) {
107
+ text = replaceFolded(text, folded, pattern);
108
+ }
109
+ pattern.lastIndex = 0;
110
+ }
111
+ {
112
+ const folded = fold(text);
113
+ const tail = MARKER_TAIL.exec(folded.text);
114
+ if (tail !== null) {
115
+ text = text.slice(0, folded.starts[tail.index] ?? tail.index) + NEUTRALIZED;
116
+ }
117
+ }
118
+ for (const token of SPECIAL_TOKENS) {
119
+ if (text.includes(token)) {
120
+ text = text.split(token).join(NEUTRALIZED);
121
+ }
122
+ }
123
+ return text.replace(RESERVED_TOKEN, NEUTRALIZED);
124
+ };
125
+ const attribute = (value) => neutralizeOutsideText(value)
126
+ .replaceAll(/["<>\r\n]+/g, " ")
127
+ .trim();
128
+ export const wrapOutsideContent = (body, meta) => {
129
+ const id = [...globalThis.crypto.getRandomValues(new Uint8Array(8))].map((byte) => byte.toString(16).padStart(2, "0")).join("");
130
+ const from = meta.from === undefined || meta.from.trim() === "" ? "" : ` from="${attribute(meta.from)}"`;
131
+ return `<${TAG} source="${attribute(meta.source)}"${from} id="${id}">\n${neutralizeOutsideText(body)}\n</${TAG} id="${id}">`;
132
+ };
133
+ //# sourceMappingURL=outside-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outside-text.js","sourceRoot":"","sources":["../src/outside-text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/base",
3
- "version": "1.231.0",
3
+ "version": "1.233.0",
4
4
  "description": "Runtime primitives every tier shares, when-expressions, disposal, and the async schedulers",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -39,6 +39,17 @@
39
39
  "default": "./dist/lifecycle.js"
40
40
  }
41
41
  },
42
+ "./outside-text": {
43
+ "types": "./dist/outside-text.d.ts",
44
+ "import": {
45
+ "@intentic/src": "./src/outside-text.ts",
46
+ "default": "./dist/outside-text.js"
47
+ },
48
+ "require": {
49
+ "@intentic/src": "./src/outside-text.ts",
50
+ "default": "./dist/outside-text.js"
51
+ }
52
+ },
42
53
  "./async": {
43
54
  "types": "./dist/async.d.ts",
44
55
  "import": {