@jinn-network/client 0.1.9-canary.02befda9 → 0.1.9-canary.07a8bcd5

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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "clientGitSha": "02befda98bd9659ebd9c5c90d277607e8a6e3dc5",
2
+ "clientGitSha": "07a8bcd57bbb58ac64968bb4b97b4e2f04c64928",
3
3
  "codeDigest": "sha256:cfd37647ffcc9f98add6751ce2025f46e5bdd2604757bd6bf886457ae2f6c480",
4
- "builtAt": "2026-07-02T16:04:36.201Z",
5
- "implVersion": "0.1.9-canary.02befda9"
4
+ "builtAt": "2026-07-03T10:42:57.745Z",
5
+ "implVersion": "0.1.9-canary.07a8bcd5"
6
6
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "02befda98bd9659ebd9c5c90d277607e8a6e3dc5"
2
+ "commit": "07a8bcd57bbb58ac64968bb4b97b4e2f04c64928"
3
3
  }
@@ -1,6 +1,7 @@
1
1
  import { ScrubPipeline } from './pipeline.js';
2
2
  import { keyPolicyStage } from './key-policy.js';
3
3
  import { openredactionStage } from './openredaction-stage.js';
4
+ import { plainPatternsStage } from './plain-patterns-stage.js';
4
5
  import { secretlintStage } from './secretlint-stage.js';
5
6
  import { mlPiiStage } from './ml-pii-stage.js';
6
7
  /**
@@ -34,7 +35,14 @@ export const DEFAULT_KEY_POLICY = {
34
35
  */
35
36
  export function buildScrubPipeline(opts = {}) {
36
37
  const policy = opts.policy ?? DEFAULT_KEY_POLICY;
37
- const stages = [keyPolicyStage(policy), openredactionStage(policy), secretlintStage(policy)];
38
+ // plain-patterns runs after openredaction: deterministic email/home-path
39
+ // regexes closing gaps the probabilistic stage demonstrably has (#1330).
40
+ const stages = [
41
+ keyPolicyStage(policy),
42
+ openredactionStage(policy),
43
+ plainPatternsStage(policy),
44
+ secretlintStage(policy),
45
+ ];
38
46
  if (opts.piiDetector) {
39
47
  stages.push(mlPiiStage(policy, opts.piiDetector));
40
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,CAAC,QAAQ,CAAC;IAChB,IAAI,EAAE;QACJ,mCAAmC;QACnC,oCAAoC;QACpC,4BAA4B;QAC5B,6BAA6B;QAC7B,gCAAgC;QAChC,iCAAiC;QACjC,OAAO;KACR;CACF,CAAC;AAQF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAkC,EAAE;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7F,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,CAAC,QAAQ,CAAC;IAChB,IAAI,EAAE;QACJ,mCAAmC;QACnC,oCAAoC;QACpC,4BAA4B;QAC5B,6BAA6B;QAC7B,gCAAgC;QAChC,iCAAiC;QACjC,OAAO;KACR;CACF,CAAC;AAQF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAkC,EAAE;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;IACjD,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,MAAM,GAAG;QACb,cAAc,CAAC,MAAM,CAAC;QACtB,kBAAkB,CAAC,MAAM,CAAC;QAC1B,kBAAkB,CAAC,MAAM,CAAC;QAC1B,eAAe,CAAC,MAAM,CAAC;KACxB,CAAC;IACF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
@@ -1,6 +1,35 @@
1
1
  import { OpenRedaction } from 'openredaction';
2
2
  import { type KeyPolicy } from './key-policy.js';
3
3
  import type { ScrubStage } from './types.js';
4
+ /**
5
+ * Patterns excluded from the default detector (#1331). All three ship with a
6
+ * bare-word regex (`\b[a-zA-Z0-9._]{3,30}\b` or equivalent) that matches
7
+ * nearly every token of ordinary technical prose — "Update the staging
8
+ * bucket config" came back as `[IG_USER_…] the staging [IG_USER_…]
9
+ * [IG_USER_…]`, destroying the readability and distillation value of every
10
+ * published trajectory. A social handle has no shape of its own outside its
11
+ * platform context, so dropping these loses no genuine coverage: emails,
12
+ * keys, cards, SSNs, phones etc. all keep their dedicated patterns (pinned
13
+ * by test/trajectory/scrub/openredaction-tuning.test.ts and the
14
+ * harness-layer seeded-secrets fixture).
15
+ *
16
+ * `NAME` is denylisted for the same reason with an acknowledged trade-off:
17
+ * its follower branch accepts lowercase words (`[A-Z][a-z…]+ (\s+[a-z…]+){1,3}`),
18
+ * so ANY sentence-initial capitalised word plus 1–3 words matches — "Fix the
19
+ * failing test" is a "name" to it, which mangles the first sentence of
20
+ * essentially every task summary. Person-name detection is the ML PII
21
+ * stage's job (GLiNER, `mlPiiStage`), which the daemon wires when the model
22
+ * is available; a bare unlabelled name in prose is not regex-detectable at
23
+ * acceptable precision.
24
+ */
25
+ export declare const BARE_WORD_PATTERN_DENYLIST: readonly string[];
26
+ /**
27
+ * Default detector: openredaction's full pattern set minus the audited
28
+ * bare-word matchers. Built via the `patterns` whitelist option (the
29
+ * library has no exclude option), so a version bump that renames patterns
30
+ * fails loudly in the tuning tests rather than silently re-enabling junk.
31
+ */
32
+ export declare function buildDefaultDetector(): OpenRedaction;
4
33
  /**
5
34
  * Structured-PII stage backed by `openredaction` (570+ curated regex patterns +
6
35
  * checksum validation, e.g. Luhn for cards). Runs only on `content`-classified
@@ -1,6 +1,45 @@
1
1
  import { OpenRedaction } from 'openredaction';
2
2
  import { classifyKey } from './key-policy.js';
3
- const VERSION = '0.1.0';
3
+ const VERSION = '0.2.0';
4
+ /**
5
+ * Patterns excluded from the default detector (#1331). All three ship with a
6
+ * bare-word regex (`\b[a-zA-Z0-9._]{3,30}\b` or equivalent) that matches
7
+ * nearly every token of ordinary technical prose — "Update the staging
8
+ * bucket config" came back as `[IG_USER_…] the staging [IG_USER_…]
9
+ * [IG_USER_…]`, destroying the readability and distillation value of every
10
+ * published trajectory. A social handle has no shape of its own outside its
11
+ * platform context, so dropping these loses no genuine coverage: emails,
12
+ * keys, cards, SSNs, phones etc. all keep their dedicated patterns (pinned
13
+ * by test/trajectory/scrub/openredaction-tuning.test.ts and the
14
+ * harness-layer seeded-secrets fixture).
15
+ *
16
+ * `NAME` is denylisted for the same reason with an acknowledged trade-off:
17
+ * its follower branch accepts lowercase words (`[A-Z][a-z…]+ (\s+[a-z…]+){1,3}`),
18
+ * so ANY sentence-initial capitalised word plus 1–3 words matches — "Fix the
19
+ * failing test" is a "name" to it, which mangles the first sentence of
20
+ * essentially every task summary. Person-name detection is the ML PII
21
+ * stage's job (GLiNER, `mlPiiStage`), which the daemon wires when the model
22
+ * is available; a bare unlabelled name in prose is not regex-detectable at
23
+ * acceptable precision.
24
+ */
25
+ export const BARE_WORD_PATTERN_DENYLIST = [
26
+ 'INSTAGRAM_USERNAME',
27
+ 'XBOX_GAMERTAG',
28
+ 'PSN_ID',
29
+ 'NAME',
30
+ ];
31
+ /**
32
+ * Default detector: openredaction's full pattern set minus the audited
33
+ * bare-word matchers. Built via the `patterns` whitelist option (the
34
+ * library has no exclude option), so a version bump that renames patterns
35
+ * fails loudly in the tuning tests rather than silently re-enabling junk.
36
+ */
37
+ export function buildDefaultDetector() {
38
+ const allTypes = [...new Set(new OpenRedaction().getPatterns().map((p) => p.type))];
39
+ return new OpenRedaction({
40
+ patterns: allTypes.filter((t) => !BARE_WORD_PATTERN_DENYLIST.includes(t)),
41
+ });
42
+ }
4
43
  /**
5
44
  * Structured-PII stage backed by `openredaction` (570+ curated regex patterns +
6
45
  * checksum validation, e.g. Luhn for cards). Runs only on `content`-classified
@@ -11,7 +50,7 @@ const VERSION = '0.1.0';
11
50
  * The detector is constructed once at factory time and reused across spans
12
51
  * (pattern compilation is not free).
13
52
  */
14
- export function openredactionStage(policy, detector = new OpenRedaction()) {
53
+ export function openredactionStage(policy, detector = buildDefaultDetector()) {
15
54
  return {
16
55
  name: 'openredaction',
17
56
  version: VERSION,
@@ -1 +1 @@
1
- {"version":3,"file":"openredaction-stage.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/openredaction-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAC;AAG9D,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,WAA0B,IAAI,aAAa,EAAE;IAE7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,KAAK,CAAC,KAAK,CAAC,UAAsB;YAChC,MAAM,GAAG,GAAe,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACpC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"openredaction-stage.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/openredaction-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAC;AAG9D,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,oBAAoB;IACpB,eAAe;IACf,QAAQ;IACR,MAAM;CACP,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,IAAI,aAAa,CAAC;QACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC1E,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,WAA0B,oBAAoB,EAAE;IAEhD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,KAAK,CAAC,KAAK,CAAC,UAAsB;YAChC,MAAM,GAAG,GAAe,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACpC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * plain-patterns stage — deterministic regex redaction for two shapes the
3
+ * probabilistic stages demonstrably miss (issue #1330, found while building
4
+ * the harness-layer capture path in #1310):
5
+ *
6
+ * - plain email addresses: openredaction's EMAIL pattern is unreliable
7
+ * (misses e.g. `jane.doe@example-corp.com`);
8
+ * - POSIX home-directory paths carrying a username
9
+ * (`/Users/<name>/…`, `/home/<name>/…`) — nothing else touches paths.
10
+ *
11
+ * Graduated here from the harness-layer's capture-local stages so the daemon
12
+ * capture publish path and the harness layer share ONE implementation.
13
+ * Deliberately broad: over-redacting an email or a username is cheap; leaking
14
+ * one is not.
15
+ */
16
+ import { type KeyPolicy } from './key-policy.js';
17
+ import type { ScrubStage } from './types.js';
18
+ export declare function plainPatternsStage(policy: KeyPolicy): ScrubStage;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * plain-patterns stage — deterministic regex redaction for two shapes the
3
+ * probabilistic stages demonstrably miss (issue #1330, found while building
4
+ * the harness-layer capture path in #1310):
5
+ *
6
+ * - plain email addresses: openredaction's EMAIL pattern is unreliable
7
+ * (misses e.g. `jane.doe@example-corp.com`);
8
+ * - POSIX home-directory paths carrying a username
9
+ * (`/Users/<name>/…`, `/home/<name>/…`) — nothing else touches paths.
10
+ *
11
+ * Graduated here from the harness-layer's capture-local stages so the daemon
12
+ * capture publish path and the harness layer share ONE implementation.
13
+ * Deliberately broad: over-redacting an email or a username is cheap; leaking
14
+ * one is not.
15
+ */
16
+ import { classifyKey } from './key-policy.js';
17
+ const VERSION = '0.1.0';
18
+ /** Plain email shape. */
19
+ const EMAIL_PATTERN = /[A-Za-z0-9._%+-]+@[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])+)+/g;
20
+ /** POSIX home-dir path segment carrying a username. */
21
+ const HOME_PATH_PATTERN = /\/(?:Users|home)\/[^/\s"'`]+/g;
22
+ const PATTERNS = [
23
+ { pattern: EMAIL_PATTERN, replacement: '[EMAIL]', detail: 'email' },
24
+ { pattern: HOME_PATH_PATTERN, replacement: '/users/anon', detail: 'home-path' },
25
+ ];
26
+ export function plainPatternsStage(policy) {
27
+ return {
28
+ name: 'plain-patterns',
29
+ version: VERSION,
30
+ scrub(attributes) {
31
+ const out = {};
32
+ const redactions = [];
33
+ for (const [key, value] of Object.entries(attributes)) {
34
+ if (typeof value !== 'string' || classifyKey(key, policy) !== 'content') {
35
+ out[key] = value;
36
+ continue;
37
+ }
38
+ let scrubbed = value;
39
+ for (const { pattern, replacement, detail } of PATTERNS) {
40
+ let hits = 0;
41
+ scrubbed = scrubbed.replace(pattern, () => {
42
+ hits += 1;
43
+ return replacement;
44
+ });
45
+ for (let i = 0; i < hits; i += 1) {
46
+ redactions.push({ key, stage: 'plain-patterns', kind: 'pii', detail });
47
+ }
48
+ }
49
+ out[key] = scrubbed;
50
+ }
51
+ return { attributes: out, redactions };
52
+ },
53
+ };
54
+ }
55
+ //# sourceMappingURL=plain-patterns-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-patterns-stage.js","sourceRoot":"","sources":["../../../src/trajectory/scrub/plain-patterns-stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAC;AAG9D,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,yBAAyB;AACzB,MAAM,aAAa,GACjB,4GAA4G,CAAC;AAE/G,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAE1D,MAAM,QAAQ,GAAoE;IAChF,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IACnE,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE;CAChF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,KAAK,CAAC,UAAsB;YAC1B,MAAM,GAAG,GAAe,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAsB,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;oBACxE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,KAAK,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;oBACxD,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;wBACxC,IAAI,IAAI,CAAC,CAAC;wBACV,OAAO,WAAW,CAAC;oBACrB,CAAC,CAAC,CAAC;oBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACtB,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jinn-network/client",
3
- "version": "0.1.9-canary.02befda9",
3
+ "version": "0.1.9-canary.07a8bcd5",
4
4
  "description": "Jinn protocol client — headless daemon for the restoration training loop",
5
5
  "type": "module",
6
6
  "packageManager": "yarn@4.13.0",