@iicp/client 0.7.78 → 0.7.80

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/policy.js ADDED
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * Client-side policy guardrails.
4
+ *
5
+ * The SDK refuses intent URNs aligned with prohibited-practice families before
6
+ * discovery/routing. This is deliberately narrow; it does not replace deployer
7
+ * legal review for high-risk or domain-specific systems.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.PROHIBITED_INTENT_RULES = exports.POLICY_REFUSAL_CODE = void 0;
11
+ exports.prohibitedIntentReason = prohibitedIntentReason;
12
+ exports.ensureIntentAllowed = ensureIntentAllowed;
13
+ const errors_js_1 = require("./errors.js");
14
+ exports.POLICY_REFUSAL_CODE = "IICP-POLICY-001";
15
+ exports.PROHIBITED_INTENT_RULES = [
16
+ {
17
+ rule_id: "eu-ai-act-social-scoring",
18
+ label: "social scoring",
19
+ fragments: ["social-scoring", "social_scoring", "social:scoring"],
20
+ },
21
+ {
22
+ rule_id: "eu-ai-act-criminal-risk",
23
+ label: "individual criminal risk prediction",
24
+ fragments: ["criminal-risk", "criminal_risk", "criminal:risk", "predict-crime"],
25
+ },
26
+ {
27
+ rule_id: "eu-ai-act-workplace-education-emotion",
28
+ label: "workplace or education emotion recognition",
29
+ fragments: [
30
+ "emotion:workplace",
31
+ "emotion:education",
32
+ "workplace-monitoring",
33
+ "education-monitoring",
34
+ "worker-monitoring",
35
+ ],
36
+ },
37
+ {
38
+ rule_id: "eu-ai-act-protected-trait-biometric",
39
+ label: "biometric protected-trait classification",
40
+ fragments: ["protected-trait", "protected_trait", "biometric:protected"],
41
+ },
42
+ {
43
+ rule_id: "eu-ai-act-untargeted-face-scraping",
44
+ label: "untargeted facial image scraping for recognition databases",
45
+ fragments: ["untargeted-scraping", "untargeted_scraping", "face-scraping", "facial-scraping"],
46
+ },
47
+ {
48
+ rule_id: "eu-ai-act-realtime-remote-biometric-id",
49
+ label: "real-time remote biometric identification",
50
+ fragments: ["remote-biometric:realtime", "realtime-remote-biometric", "real-time-remote-biometric"],
51
+ },
52
+ {
53
+ rule_id: "eu-ai-act-nonconsensual-sexual-deepfake",
54
+ label: "non-consensual sexual deepfake or CSAM generation",
55
+ fragments: ["nonconsensual-sexual", "non-consensual-sexual", "child-sexual-abuse", "csam"],
56
+ },
57
+ ];
58
+ function prohibitedIntentReason(intent) {
59
+ const normalized = intent.trim().toLowerCase();
60
+ for (const rule of exports.PROHIBITED_INTENT_RULES) {
61
+ if (rule.fragments.some((fragment) => normalized.includes(fragment))) {
62
+ return `${rule.label} (${rule.rule_id})`;
63
+ }
64
+ }
65
+ return undefined;
66
+ }
67
+ function ensureIntentAllowed(intent) {
68
+ const reason = prohibitedIntentReason(intent);
69
+ if (!reason)
70
+ return;
71
+ throw new errors_js_1.IicpError(`Intent refused by IICP client policy before discovery/routing: ${reason}. Use a lawful, documented, human-reviewed compliance path outside the public mesh for restricted/high-risk workflows.`, exports.POLICY_REFUSAL_CODE, { component: "sdk" });
72
+ }
73
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAwDH,wDAQC;AAED,kDAQC;AAxED,2CAAwC;AAE3B,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AAQxC,QAAA,uBAAuB,GAAoC;IACtE;QACE,OAAO,EAAE,0BAA0B;QACnC,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;KAClE;IACD;QACE,OAAO,EAAE,yBAAyB;QAClC,KAAK,EAAE,qCAAqC;QAC5C,SAAS,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC;KAChF;IACD;QACE,OAAO,EAAE,uCAAuC;QAChD,KAAK,EAAE,4CAA4C;QACnD,SAAS,EAAE;YACT,mBAAmB;YACnB,mBAAmB;YACnB,sBAAsB;YACtB,sBAAsB;YACtB,mBAAmB;SACpB;KACF;IACD;QACE,OAAO,EAAE,qCAAqC;QAC9C,KAAK,EAAE,0CAA0C;QACjD,SAAS,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;KACzE;IACD;QACE,OAAO,EAAE,oCAAoC;QAC7C,KAAK,EAAE,4DAA4D;QACnE,SAAS,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,CAAC;KAC9F;IACD;QACE,OAAO,EAAE,wCAAwC;QACjD,KAAK,EAAE,2CAA2C;QAClD,SAAS,EAAE,CAAC,2BAA2B,EAAE,2BAA2B,EAAE,4BAA4B,CAAC;KACpG;IACD;QACE,OAAO,EAAE,yCAAyC;QAClD,KAAK,EAAE,mDAAmD;QAC1D,SAAS,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,CAAC;KAC3F;CACF,CAAC;AAEF,SAAgB,sBAAsB,CAAC,MAAc;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,+BAAuB,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,IAAI,qBAAS,CACjB,kEAAkE,MAAM,wHAAwH,EAChM,2BAAmB,EACnB,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;AACJ,CAAC"}
@@ -5,6 +5,10 @@ export declare const DEFAULT_RECOVERY_CHECK_EVERY_HEARTBEATS = 2;
5
5
  export type RecoveryState = "healthy" | "local_unhealthy" | "backend_attention" | "route_mismatch" | "tunnel_cooling_down" | "directory_absent" | "limited_reach" | "restart_recommended" | "unknown";
6
6
  export type RecoveryAction = "none" | "reregister" | "wait_cooldown" | "mark_unavailable" | "restart_self" | "operator_endpoint_needed" | "backend_attention";
7
7
  export type DirectoryPresence = "present" | "absent" | "unknown";
8
+ export interface RegistryRouteStatus {
9
+ presence: DirectoryPresence;
10
+ routeNeedsPromotion: boolean;
11
+ }
8
12
  export declare function nodeRegistryPrefix(nodeId: string): string;
9
13
  export declare function envGraceChecks(): number;
10
14
  export declare function envCheckEveryHeartbeats(): number;
@@ -21,4 +25,6 @@ export declare function classifyRecovery(opts: {
21
25
  action: RecoveryAction;
22
26
  };
23
27
  export declare function registryNodePresence(directoryUrl: string, nodeId: string, timeoutMs?: number): Promise<DirectoryPresence>;
28
+ export declare function routeNeedsPromotionFromRegistryJson(data: unknown): boolean;
29
+ export declare function registryRouteStatus(directoryUrl: string, nodeId: string, timeoutMs?: number): Promise<RegistryRouteStatus>;
24
30
  //# sourceMappingURL=recovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AACA,oDAAoD;AAEpD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,uCAAuC,IAAI,CAAC;AAEzD,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,eAAe,GACf,qBAAqB,GACrB,SAAS,CAAC;AAEd,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,YAAY,GACZ,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,0BAA0B,GAC1B,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAInD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAanD;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,SAAQ,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAe5B"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AACA,oDAAoD;AAEpD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,uCAAuC,IAAI,CAAC;AAEzD,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,eAAe,GACf,qBAAqB,GACrB,SAAS,CAAC;AAEd,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,YAAY,GACZ,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,0BAA0B,GAC1B,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAGhD;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAInD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAanD;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,SAAQ,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CA2B1E;AAED,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,SAAQ,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAuB9B"}
package/dist/recovery.js CHANGED
@@ -9,6 +9,8 @@ exports.envCheckEveryHeartbeats = envCheckEveryHeartbeats;
9
9
  exports.supervisedRecoveryEnabled = supervisedRecoveryEnabled;
10
10
  exports.classifyRecovery = classifyRecovery;
11
11
  exports.registryNodePresence = registryNodePresence;
12
+ exports.routeNeedsPromotionFromRegistryJson = routeNeedsPromotionFromRegistryJson;
13
+ exports.registryRouteStatus = registryRouteStatus;
12
14
  exports.RECOVERY_EXIT_CODE = 76;
13
15
  exports.DEFAULT_RECOVERY_GRACE_CHECKS = 3;
14
16
  exports.DEFAULT_RECOVERY_CHECK_EVERY_HEARTBEATS = 2;
@@ -68,4 +70,59 @@ async function registryNodePresence(directoryUrl, nodeId, timeoutMs = 5_000) {
68
70
  clearTimeout(timer);
69
71
  }
70
72
  }
73
+ function routeNeedsPromotionFromRegistryJson(data) {
74
+ const root = isRecord(data) && isRecord(data.node) ? data.node : data;
75
+ if (!isRecord(root))
76
+ return false;
77
+ const summary = isRecord(root.status_summary) ? root.status_summary : {};
78
+ if (summary.state === "direct_unverified")
79
+ return true;
80
+ const routeEvidence = typeof root.route_evidence === "string"
81
+ ? root.route_evidence
82
+ : typeof summary.evidence_source === "string"
83
+ ? summary.evidence_source
84
+ : undefined;
85
+ const routingHint = typeof root.routing_hint === "string"
86
+ ? root.routing_hint
87
+ : typeof summary.routing_hint === "string"
88
+ ? summary.routing_hint
89
+ : undefined;
90
+ const browserUsable = typeof root.browser_usable === "boolean"
91
+ ? root.browser_usable
92
+ : typeof summary.browser_usable === "boolean"
93
+ ? summary.browser_usable
94
+ : undefined;
95
+ return routingHint === "http_ipv6" && routeEvidence !== "directory_observed" && browserUsable !== true;
96
+ }
97
+ async function registryRouteStatus(directoryUrl, nodeId, timeoutMs = 5_000) {
98
+ const controller = new AbortController();
99
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
100
+ try {
101
+ const resp = await fetch(`${directoryUrl.replace(/\/+$/, "")}/v1/registry/nodes/${nodeRegistryPrefix(nodeId)}`, {
102
+ signal: controller.signal,
103
+ });
104
+ if (resp.ok) {
105
+ let data = {};
106
+ try {
107
+ data = await resp.json();
108
+ }
109
+ catch {
110
+ data = {};
111
+ }
112
+ return { presence: "present", routeNeedsPromotion: routeNeedsPromotionFromRegistryJson(data) };
113
+ }
114
+ if (resp.status === 404)
115
+ return { presence: "absent", routeNeedsPromotion: false };
116
+ return { presence: "unknown", routeNeedsPromotion: false };
117
+ }
118
+ catch {
119
+ return { presence: "unknown", routeNeedsPromotion: false };
120
+ }
121
+ finally {
122
+ clearTimeout(timer);
123
+ }
124
+ }
125
+ function isRecord(value) {
126
+ return typeof value === "object" && value !== null && !Array.isArray(value);
127
+ }
71
128
  //# sourceMappingURL=recovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Remote-routing policy gates for prompt dispatch (#585).
3
+ *
4
+ * These checks run after prompt-free directory discovery and before a prompt is
5
+ * sent to any remote executor.
6
+ */
7
+ import type { Node, RoutingPolicy } from "./types.js";
8
+ export declare const ROUTING_POLICY_REFUSAL_CODE = "IICP-POLICY-ROUTING";
9
+ export interface RoutingPolicyDecision {
10
+ eligible: Node[];
11
+ rejectedReasons: string[];
12
+ skippedKeyless: number;
13
+ }
14
+ export declare function resolvedRoutingPolicy(policy?: RoutingPolicy): Required<RoutingPolicy>;
15
+ export declare function filterNodesForRoutingPolicy(nodes: Node[], policy?: RoutingPolicy, opts?: {
16
+ allowPlaintextDebug?: boolean;
17
+ }): RoutingPolicyDecision;
18
+ export declare function routingPolicyRefusalMessage(intent: string, decision: RoutingPolicyDecision, policy?: RoutingPolicy): string;
19
+ //# sourceMappingURL=routing_policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing_policy.d.ts","sourceRoot":"","sources":["../src/routing_policy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAcrF;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,qBAAqB,CAgBvB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,CAAC,EAAE,aAAa,GACrB,MAAM,CAQR"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ /**
3
+ * Remote-routing policy gates for prompt dispatch (#585).
4
+ *
5
+ * These checks run after prompt-free directory discovery and before a prompt is
6
+ * sent to any remote executor.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ROUTING_POLICY_REFUSAL_CODE = void 0;
10
+ exports.resolvedRoutingPolicy = resolvedRoutingPolicy;
11
+ exports.filterNodesForRoutingPolicy = filterNodesForRoutingPolicy;
12
+ exports.routingPolicyRefusalMessage = routingPolicyRefusalMessage;
13
+ exports.ROUTING_POLICY_REFUSAL_CODE = "IICP-POLICY-ROUTING";
14
+ const EU_REGION_PREFIXES = ["eu", "eea"];
15
+ function resolvedRoutingPolicy(policy) {
16
+ let profile = normalizeProfile(policy?.profile ?? "standard");
17
+ const defaults = profileDefaults(profile);
18
+ if (!defaults)
19
+ profile = "standard";
20
+ const d = defaults ?? profileDefaults("standard");
21
+ return {
22
+ profile,
23
+ allowed_regions: policy?.allowed_regions ?? d.allowed_regions,
24
+ require_encryption: policy?.require_encryption ?? d.require_encryption,
25
+ require_policy_manifest: policy?.require_policy_manifest ?? d.require_policy_manifest,
26
+ require_no_payload_retention: policy?.require_no_payload_retention ?? d.require_no_payload_retention,
27
+ allow_remote_executor: policy?.allow_remote_executor ?? d.allow_remote_executor,
28
+ known_operator_only: policy?.known_operator_only ?? false,
29
+ };
30
+ }
31
+ function filterNodesForRoutingPolicy(nodes, policy, opts) {
32
+ const effective = resolvedRoutingPolicy(policy);
33
+ const eligible = [];
34
+ const rejectedReasons = [];
35
+ let skippedKeyless = 0;
36
+ for (const node of nodes) {
37
+ const reason = nodeRejectionReason(node, effective, opts?.allowPlaintextDebug === true);
38
+ if (reason) {
39
+ rejectedReasons.push(reason);
40
+ if (reason === "missing_encryption_key")
41
+ skippedKeyless += 1;
42
+ continue;
43
+ }
44
+ eligible.push(node);
45
+ }
46
+ return { eligible, rejectedReasons, skippedKeyless };
47
+ }
48
+ function routingPolicyRefusalMessage(intent, decision, policy) {
49
+ const effective = resolvedRoutingPolicy(policy);
50
+ return (`Routing policy '${effective.profile}' refused all discovered nodes for '${intent}' ` +
51
+ `before prompt dispatch; no prompt was sent. Reasons: ${summarize(decision.rejectedReasons)}. ` +
52
+ "Remote nodes can read prompts they execute; use local/browser mode for sensitive data " +
53
+ "or relax the policy explicitly.");
54
+ }
55
+ function normalizeProfile(profile) {
56
+ return profile.replace(/-/g, "_").toLowerCase();
57
+ }
58
+ function profileDefaults(profile) {
59
+ const base = {
60
+ allowed_regions: [],
61
+ require_encryption: true,
62
+ require_policy_manifest: false,
63
+ require_no_payload_retention: false,
64
+ allow_remote_executor: true,
65
+ known_operator_only: false,
66
+ };
67
+ switch (profile) {
68
+ case "standard":
69
+ return { ...base, profile };
70
+ case "sensitive":
71
+ return { ...base, profile, allow_remote_executor: false };
72
+ case "eu_restricted":
73
+ return { ...base, profile, allowed_regions: EU_REGION_PREFIXES };
74
+ case "strict_policy":
75
+ return {
76
+ ...base,
77
+ profile,
78
+ require_policy_manifest: true,
79
+ require_no_payload_retention: true,
80
+ };
81
+ case "debug_override":
82
+ return { ...base, profile, require_encryption: false };
83
+ default:
84
+ return null;
85
+ }
86
+ }
87
+ function nodeRejectionReason(node, policy, allowPlaintextDebug) {
88
+ if (policy.allow_remote_executor === false)
89
+ return "remote_executor_disabled";
90
+ if (policy.allowed_regions.length > 0 && !regionAllowed(node.region, policy.allowed_regions)) {
91
+ return "region_not_allowed";
92
+ }
93
+ if (policy.require_encryption && !node.cx_public_key && !allowPlaintextDebug) {
94
+ return "missing_encryption_key";
95
+ }
96
+ const manifest = node.node_policy_manifest && typeof node.node_policy_manifest === "object"
97
+ ? node.node_policy_manifest
98
+ : undefined;
99
+ if (policy.require_policy_manifest && !manifest)
100
+ return "missing_policy_manifest";
101
+ if (policy.require_no_payload_retention && !declaresNoPayloadRetention(manifest)) {
102
+ return "payload_retention_not_none";
103
+ }
104
+ if (policy.known_operator_only)
105
+ return "known_operator_not_verified";
106
+ return null;
107
+ }
108
+ function regionAllowed(region, allowed) {
109
+ const value = (region ?? "").trim().toLowerCase();
110
+ return allowed.some((raw) => {
111
+ const item = (raw ?? "").trim().toLowerCase();
112
+ if (!item)
113
+ return false;
114
+ if (value === item || value.startsWith(`${item}-`))
115
+ return true;
116
+ return item === "eea" && value.startsWith("eu-");
117
+ });
118
+ }
119
+ function declaresNoPayloadRetention(manifest) {
120
+ const retention = manifest?.retention;
121
+ return (typeof retention === "object" &&
122
+ retention !== null &&
123
+ retention.task_payload === "none");
124
+ }
125
+ function summarize(reasons) {
126
+ if (reasons.length === 0)
127
+ return "none";
128
+ const counts = new Map();
129
+ for (const reason of reasons)
130
+ counts.set(reason, (counts.get(reason) ?? 0) + 1);
131
+ return [...counts.entries()].sort().map(([reason, count]) => `${reason}=${count}`).join(", ");
132
+ }
133
+ //# sourceMappingURL=routing_policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing_policy.js","sourceRoot":"","sources":["../src/routing_policy.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -22,6 +22,8 @@ export interface ClientConfig {
22
22
  routing_softmax_tau?: number;
23
23
  /** Phase 2 (#496): caller's JWT from directory registration, used to acquire consumer tokens. */
24
24
  node_token?: string;
25
+ /** Phase 6 (#585): default client-side policy evaluated before remote prompt dispatch. */
26
+ routing_policy?: RoutingPolicy;
25
27
  }
26
28
  export interface TaskConstraints {
27
29
  region?: string;
@@ -47,6 +49,8 @@ export interface TaskRequest {
47
49
  task_id?: string;
48
50
  /** #488 — querying node identity for self-query neutrality at the directory. */
49
51
  source_node_id?: string;
52
+ /** Phase 6 (#585): optional per-request remote-routing policy override. */
53
+ routing_policy?: RoutingPolicy;
50
54
  }
51
55
  export interface TaskResponse {
52
56
  task_id: string;
@@ -68,6 +72,20 @@ export interface CxPublicKey {
68
72
  key: string;
69
73
  key_id: string;
70
74
  }
75
+ export interface NodePolicyManifest {
76
+ version?: string | null;
77
+ jurisdiction?: string | null;
78
+ policy_url?: string | null;
79
+ contact_url?: string | null;
80
+ remote_executor_can_read_prompt?: boolean;
81
+ training_use?: "none" | "opt_in" | "provider_defined" | string;
82
+ retention?: Record<string, unknown>;
83
+ subprocessors?: string[];
84
+ unsupported_intents?: string[];
85
+ signed_statement?: string | null;
86
+ evidence?: string;
87
+ [key: string]: unknown;
88
+ }
71
89
  export interface Node {
72
90
  node_id: string;
73
91
  endpoint: string;
@@ -84,6 +102,8 @@ export interface Node {
84
102
  route_evidence?: string;
85
103
  routing_hint?: string;
86
104
  browser_usable?: boolean;
105
+ /** Phase-1 compliance: public, self-attested node policy manifest. */
106
+ node_policy_manifest?: NodePolicyManifest | null;
87
107
  }
88
108
  export interface ChatMessage {
89
109
  role: "user" | "assistant" | "system";
@@ -113,5 +133,16 @@ export interface ChatOptions {
113
133
  model?: string;
114
134
  max_tokens?: number;
115
135
  temperature?: number;
136
+ routing_policy?: RoutingPolicy;
137
+ }
138
+ export type RoutingProfile = "standard" | "sensitive" | "eu_restricted" | "strict_policy" | "debug_override";
139
+ export interface RoutingPolicy {
140
+ profile?: RoutingProfile | string;
141
+ allowed_regions?: string[];
142
+ require_encryption?: boolean;
143
+ require_policy_manifest?: boolean;
144
+ require_no_payload_retention?: boolean;
145
+ allow_remote_executor?: boolean;
146
+ known_operator_only?: boolean;
116
147
  }
117
148
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iicp/client",
3
- "version": "0.7.78",
3
+ "version": "0.7.80",
4
4
  "description": "Use the open IICP AI mesh from TypeScript or JavaScript without running a node",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",