arisa 5.1.49 → 5.1.64

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.
Files changed (56) hide show
  1. package/AGENTS.md +0 -2
  2. package/README.md +9 -0
  3. package/package.json +1 -1
  4. package/src/core/agent/agent-manager.js +49 -489
  5. package/src/core/agent/agent-session-lifecycle.js +181 -0
  6. package/src/core/agent/pi-capability-tools.js +183 -0
  7. package/src/core/artifacts/artifact-store.js +73 -17
  8. package/src/core/capabilities/capability-service.js +340 -0
  9. package/src/core/config/config-defaults.js +28 -1
  10. package/src/core/tasks/task-routing.js +7 -0
  11. package/src/core/tasks/task-runner.js +68 -0
  12. package/src/core/tasks/task-store.js +382 -92
  13. package/src/core/tools/tool-output-materializer.js +5 -5
  14. package/src/core/tools/tool-registry.js +20 -5
  15. package/src/core/tools/weighted-resource-governor.js +153 -0
  16. package/src/index.js +20 -0
  17. package/src/official-tools.lock.json +62 -45
  18. package/src/runtime/arisa-capabilities.js +51 -242
  19. package/src/runtime/create-app.js +11 -2
  20. package/src/runtime/create-headless-app.js +7 -4
  21. package/src/runtime/paths.js +4 -0
  22. package/src/runtime/service-manager.js +3 -1
  23. package/src/runtime/service-supervisor.js +98 -0
  24. package/src/transport/telegram/bot.js +186 -374
  25. package/src/transport/telegram/chat-queue.js +83 -6
  26. package/src/transport/telegram/prompt-builders.js +9 -0
  27. package/src/transport/telegram/reply-topic-routing.js +111 -0
  28. package/src/transport/telegram/task-dispatcher.js +96 -36
  29. package/src/transport/telegram/telegram-auth-controller.js +180 -0
  30. package/src/transport/telegram/telegram-session-bridge.js +177 -0
  31. package/src/transport/telegram/telegram-tools-command.js +28 -0
  32. package/src/transport/telegram/telegram-workspace-controller.js +66 -0
  33. package/src/transport/telegram/workspace-topic-store.js +228 -0
  34. package/test/agent-session-lifecycle.test.js +58 -0
  35. package/test/artifact-store.test.js +38 -2
  36. package/test/capabilities-security.test.js +58 -0
  37. package/test/chat-queue.test.js +32 -0
  38. package/test/context-and-task-bounds.test.js +76 -1
  39. package/test/device-code-message.test.js +9 -0
  40. package/test/media-caption.test.js +1 -1
  41. package/test/model-selection.test.js +9 -1
  42. package/test/official-tool-dependencies.test.js +1 -1
  43. package/test/paths.test.js +8 -0
  44. package/test/pi-capability-tools.test.js +65 -0
  45. package/test/service-manager.test.js +48 -0
  46. package/test/session-start-operational-notes.test.js +1 -1
  47. package/test/task-idempotency.test.js +40 -0
  48. package/test/task-routing.test.js +62 -0
  49. package/test/task-store.test.js +231 -7
  50. package/test/telegram-reply-topic-routing.test.js +94 -0
  51. package/test/telegram-task-dispatcher.test.js +150 -23
  52. package/test/telegram-text-artifact.test.js +13 -2
  53. package/test/telegram-tools-command.test.js +47 -0
  54. package/test/telegram-workspace-topic-store.test.js +124 -0
  55. package/test/tool-registry-run.test.js +41 -0
  56. package/test/weighted-resource-governor.test.js +95 -0
@@ -0,0 +1,153 @@
1
+ const defaultCapacity = 2;
2
+ const defaultMaxQueuedPerClass = 100;
3
+
4
+ function positiveInteger(value, fallback) {
5
+ const parsed = Number(value);
6
+ return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : fallback;
7
+ }
8
+
9
+ function resourceClassName(value) {
10
+ const name = String(value || "").trim();
11
+ if (!name) return "";
12
+ if (!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(name)) {
13
+ throw new Error(`Invalid tool execution resource class: ${name}`);
14
+ }
15
+ return name;
16
+ }
17
+
18
+ export function normalizeToolExecution(execution) {
19
+ if (execution == null) return null;
20
+ if (!execution || typeof execution !== "object" || Array.isArray(execution)) {
21
+ throw new Error("Tool execution policy must be an object");
22
+ }
23
+ const resourceClass = resourceClassName(execution.resourceClass);
24
+ if (!resourceClass) throw new Error("Tool execution resourceClass is required");
25
+ const weight = positiveInteger(execution.weight, 0);
26
+ if (!weight) throw new Error("Tool execution weight must be a positive integer");
27
+ return { resourceClass, weight };
28
+ }
29
+
30
+ export function normalizeToolExecutionPolicy(policy = {}) {
31
+ const configuredCapacities = policy?.capacities && typeof policy.capacities === "object" && !Array.isArray(policy.capacities)
32
+ ? policy.capacities
33
+ : {};
34
+ const capacities = {};
35
+ for (const [name, value] of Object.entries(configuredCapacities)) {
36
+ capacities[resourceClassName(name)] = positiveInteger(value, defaultCapacity);
37
+ }
38
+ return {
39
+ defaultCapacity: positiveInteger(policy?.defaultCapacity, defaultCapacity),
40
+ maxQueuedPerClass: positiveInteger(policy?.maxQueuedPerClass, defaultMaxQueuedPerClass),
41
+ capacities
42
+ };
43
+ }
44
+
45
+ function noopLease() {
46
+ return { waitedMs: 0, release() {} };
47
+ }
48
+
49
+ export class WeightedResourceGovernor {
50
+ constructor({ policy, logger, now = () => Date.now(), memoryUsage = () => process.memoryUsage() } = {}) {
51
+ this.policy = normalizeToolExecutionPolicy(policy);
52
+ this.logger = logger;
53
+ this.now = now;
54
+ this.memoryUsage = memoryUsage;
55
+ this.resources = new Map();
56
+ this.peakRssBytes = 0;
57
+ this.lastLoggedRssBytes = 0;
58
+ }
59
+
60
+ capacityFor(resourceClass) {
61
+ return this.policy.capacities[resourceClass] || this.policy.defaultCapacity;
62
+ }
63
+
64
+ stateFor(resourceClass) {
65
+ let state = this.resources.get(resourceClass);
66
+ if (!state) {
67
+ state = { activeWeight: 0, queue: [] };
68
+ this.resources.set(resourceClass, state);
69
+ }
70
+ return state;
71
+ }
72
+
73
+ observeMemory(resourceClass) {
74
+ const rss = Number(this.memoryUsage()?.rss) || 0;
75
+ if (rss <= this.peakRssBytes) return;
76
+ this.peakRssBytes = rss;
77
+ const logStepBytes = 8 * 1024 * 1024;
78
+ if (this.lastLoggedRssBytes && rss - this.lastLoggedRssBytes < logStepBytes) return;
79
+ this.lastLoggedRssBytes = rss;
80
+ this.logger?.log("tools", `worker RSS peak ${Math.ceil(rss / 1024 / 1024)} MiB while using ${resourceClass}`);
81
+ }
82
+
83
+ createLease(resourceClass, weight, waitedMs) {
84
+ let released = false;
85
+ return {
86
+ waitedMs,
87
+ release: () => {
88
+ if (released) return;
89
+ released = true;
90
+ const state = this.stateFor(resourceClass);
91
+ state.activeWeight = Math.max(0, state.activeWeight - weight);
92
+ this.observeMemory(resourceClass);
93
+ this.drain(resourceClass);
94
+ }
95
+ };
96
+ }
97
+
98
+ grant(resourceClass, request) {
99
+ const state = this.stateFor(resourceClass);
100
+ state.activeWeight += request.weight;
101
+ const waitedMs = Math.max(0, this.now() - request.queuedAt);
102
+ this.observeMemory(resourceClass);
103
+ if (waitedMs > 0) {
104
+ this.logger?.log("tools", `${request.label} acquired ${resourceClass} capacity after ${waitedMs}ms`);
105
+ }
106
+ request.resolve(this.createLease(resourceClass, request.weight, waitedMs));
107
+ }
108
+
109
+ drain(resourceClass) {
110
+ const state = this.stateFor(resourceClass);
111
+ const capacity = this.capacityFor(resourceClass);
112
+ while (state.queue.length) {
113
+ const next = state.queue[0];
114
+ if (state.activeWeight + next.weight > capacity) break;
115
+ state.queue.shift();
116
+ this.grant(resourceClass, next);
117
+ }
118
+ }
119
+
120
+ acquire(execution, label = "tool") {
121
+ if (!execution) return Promise.resolve(noopLease());
122
+ const resourceClass = execution.resourceClass;
123
+ const capacity = this.capacityFor(resourceClass);
124
+ const weight = Math.min(execution.weight, capacity);
125
+ const state = this.stateFor(resourceClass);
126
+ if (!state.queue.length && state.activeWeight + weight <= capacity) {
127
+ return new Promise((resolve) => this.grant(resourceClass, {
128
+ weight,
129
+ label,
130
+ queuedAt: this.now(),
131
+ resolve
132
+ }));
133
+ }
134
+ if (state.queue.length >= this.policy.maxQueuedPerClass) {
135
+ throw new Error(`Tool execution queue is full for resource class ${resourceClass}`);
136
+ }
137
+ this.logger?.log("tools", `${label} queued for ${resourceClass} capacity (${state.activeWeight}/${capacity})`);
138
+ return new Promise((resolve) => {
139
+ state.queue.push({ weight, label, queuedAt: this.now(), resolve });
140
+ });
141
+ }
142
+
143
+ snapshot() {
144
+ return {
145
+ peakRssBytes: this.peakRssBytes,
146
+ resources: Object.fromEntries([...this.resources.entries()].map(([name, state]) => [name, {
147
+ capacity: this.capacityFor(name),
148
+ activeWeight: state.activeWeight,
149
+ queued: state.queue.length
150
+ }]))
151
+ };
152
+ }
153
+ }
package/src/index.js CHANGED
@@ -5,6 +5,7 @@ import { applyRuntimeOverrides, createApp } from "./runtime/create-app.js";
5
5
  import { loadConfig } from "./core/config/config-store.js";
6
6
  import { createLogger } from "./runtime/logger.js";
7
7
  import { getServiceStatus, handoffServiceRestart, registerServiceProcess, restartService, serviceEntryFile, startService, stopService, unregisterServiceProcess } from "./runtime/service-manager.js";
8
+ import { createServiceSupervisor } from "./runtime/service-supervisor.js";
8
9
  import { flushArisaHome } from "./runtime/flush.js";
9
10
  import { readPackageVersion, showServiceLogs } from "./runtime/log-viewer.js";
10
11
  import { arisaPackageDir } from "./runtime/paths.js";
@@ -19,6 +20,7 @@ const command = cli.positionals[0] || "run";
19
20
  const forceBootstrap = Boolean(cli.flags.bootstrap);
20
21
  const verbose = !cli.flags.silent;
21
22
  const serviceRunner = Boolean(cli.flags["service-runner"]);
23
+ const serviceWorker = Boolean(cli.flags["service-worker"]);
22
24
  const slaveCommand = command === "slave";
23
25
  const slaveServiceRunner = slaveCommand && serviceRunner;
24
26
  const runtimeOverrides = toNestedOverrides(cli.nestedFlags);
@@ -233,6 +235,24 @@ async function main() {
233
235
 
234
236
  if (serviceRunner) {
235
237
  await registerServiceProcess();
238
+ const persistedConfig = await loadConfig();
239
+ const workerArgs = [serviceEntryFile, "--service-worker", ...toServiceRunnerArgs(cli.nestedFlags)];
240
+ if (!verbose) workerArgs.push("--silent");
241
+ const supervisor = createServiceSupervisor({
242
+ command: process.execPath,
243
+ args: workerArgs,
244
+ restartLimit: persistedConfig.service.workerRestartLimit,
245
+ restartBackoffMs: persistedConfig.service.workerRestartBackoffMs,
246
+ restartBackoffMaxMs: persistedConfig.service.workerRestartBackoffMaxMs,
247
+ stableRuntimeMs: persistedConfig.service.workerStableRuntimeMs,
248
+ logger
249
+ });
250
+ activeApp = supervisor;
251
+ await supervisor.start();
252
+ return;
253
+ }
254
+
255
+ if (serviceWorker) {
236
256
  await runForeground();
237
257
  return;
238
258
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 1,
3
3
  "repository": "https://github.com/clasen/Arisa.git",
4
- "commit": "aaec12e4f63f4959462b26380e7d4c1a60562586",
4
+ "commit": "410d18e354374b43a225c31be574deb4b8f69aba",
5
5
  "tools": {
6
6
  "browser-session-bridge": {
7
7
  "version": "0.1.0",
@@ -31,24 +31,26 @@
31
31
  }
32
32
  },
33
33
  "campaign-draft-runner": {
34
- "version": "0.3.3",
34
+ "version": "0.5.0",
35
35
  "toolDependencies": {
36
36
  "pr-campaign": "^0.1.0",
37
37
  "gmail-workspace": "^0.1.0"
38
38
  },
39
39
  "files": {
40
- "README.md": "fb73d47f6825a1c9b419f6667a319c2cbd959dc7b56c488321db72a6e2210a41",
41
- "config.js": "23b95ad1851e498310eb400b1d53c648c280ddcc73cf91f6fa0ae5dc470ae6d2",
42
- "index.js": "28d58096adb76e00d74b23ef10816199a5af57e13866ed6ab829da2535d73890",
40
+ "README.md": "2c977357f774c6bc3369460ba9cd784c9b75b5f12b338e089e634e09f2a8cbcd",
41
+ "batch-skip.js": "ad428464b739e7355e00ac7cf399247ce611fcef0470d97a73893701e5b07627",
42
+ "config.js": "9b9c2d9686cebf17c3ba2630088c7028281883608f61054e733283aeb8d383cb",
43
+ "index.js": "669bf964a0e1e1a0bacc5997c6e49539022649f405543e5914ba01aa11a99330",
43
44
  "operation-timeout.js": "9b1ced30ec9ed710bb9118b91f6f3feded5111a08e1e21abf163e4cfb91d7ad2",
44
45
  "package.json": "a25b7ed1dd2c30cd68c3c10feb8ee1752cac8cd55cd4344690ffad649e231ec1",
45
46
  "product-facts.js": "69339e20e7b70a6b9833878d72b10b70ea4ede4aa448097975d0961b6aaced59",
46
47
  "search-quality.js": "ab5412d45d5144e976cccef52992e634c11aca0e21b73fd53f9dc2d489c56dd7",
47
48
  "source-exhaustion.js": "407f940f5205eb01715a797672d0dad8bd0b0b897024b5fcb87052a062ecd054",
48
- "telemetry.js": "bab44341ae2176c8a29eed19b89db4e7e251c9938af163ecd85293917d94bfb5",
49
- "test/selection-policy.test.js": "27dacdc6ac3b1c570229ef624267c5bf7e4b9606dbb71214c2a451a30ac3762b",
50
- "test/telemetry.test.js": "e297727e382163f18ab0ec4a21f55bf7e47790939510b615fd8e38c4dfc1998f",
51
- "tool.manifest.json": "1eacb9ccdf0b37bba9745ba20ce3462548bac28c7abb15214e5502e7e53d3e0d"
49
+ "telemetry.js": "984772e73d1cbb761771d6f62954a604333a301182ee74368a41ffab762da367",
50
+ "test/batch-skip.test.js": "638d185dc0b38900afe6ee9058e733ae36583d0762a0ff0347fdf245df064abc",
51
+ "test/selection-policy.test.js": "1283f18b861925aee810d156eb64c54b147304ff7352a8f83b9c2311e1f51de2",
52
+ "test/telemetry.test.js": "daa84b83658226ecd979f15d4e12d94740ffe5280d467ad29677fc1d77734a5b",
53
+ "tool.manifest.json": "71520f3be858b9c2193223e370c10d938484a2af9281087e6dc14410b45cb2ae"
52
54
  }
53
55
  },
54
56
  "creator-scout": {
@@ -65,43 +67,50 @@
65
67
  }
66
68
  },
67
69
  "gmail-workspace": {
68
- "version": "0.1.1",
70
+ "version": "0.1.2",
69
71
  "files": {
70
72
  "config.js": "6ad295ec4cedbc936835d8f86c7528e0939ef09d5792c003308d2ee85dc5eea4",
71
- "index.js": "c4b1c27a3c5d2309501b695058da73f6287e2a6239f6e2384c05daae8ee25d43",
72
- "package.json": "ba87edd5a148da9e99af6b3ab71a0024b86e1a469d56f548c7eeb253bb431f5d",
73
+ "index.js": "729f345fbd82d8e9525d46412b96efac0a30387477385208a4bb1c83fd794992",
74
+ "package.json": "991b2a5c03a049faa9363444ff5fd7517fd3556228dd8bad3d0f554cd3e2dd73",
73
75
  "secretary-state.js": "afc27732670420bccf1ce56ce715676dd2266de9f2d36a92015a93842755094a",
74
76
  "test/secretary-state.test.mjs": "3aea05524a4ad5ebcb79c6aa1db94fcd009ac8ae69414c8f950b32a32af94370",
75
- "tool.manifest.json": "2860c5684b9b9532ab4675f5cc5b96238320209086b132a5eda74ba99b6c294a"
77
+ "tool.manifest.json": "1f9316a957b3a7167e41ece7c2b83f90e69fb390d6dd8c7f99789c538b7a4800",
78
+ "arguments.js": "b4089006818020cc1cd4e5a4cc6e22242939b45a4b42d216fba2269b8cb99e64",
79
+ "test/arguments.test.mjs": "dde82737924d75747490f5535bee2420c71838b3e758925132c825ee8c869bad"
76
80
  }
77
81
  },
78
82
  "magnific-mcp": {
79
- "version": "0.1.1",
83
+ "version": "0.4.1",
80
84
  "toolDependencies": {
81
- "mcp-client": "^0.1.0"
85
+ "mcp-client": "^0.2.0"
82
86
  },
83
87
  "files": {
84
- "README.md": "519b68d10c80112f475ab173394e937b0fc5930758415c1fc65ea2f5536b6371",
88
+ "README.md": "98327aacc89cadd761db2eb49f3892818c72d410f88b86a8b6fe904c4efb3630",
85
89
  "config.js": "98a629781a1b2541806050952aa78a1e6e1b1671a6f1df7ba36c70dd116936a7",
86
90
  "delivery-claims.js": "52f05a5bd1ece1ab21f7d9a49f362f9c55f101ef5723efd642dbecf0236921cd",
91
+ "generation-request.js": "a6daa889b68fa188111b4389c6446daba87fc46fbddcf4bcccba817cf3f0b607",
87
92
  "generation-watch-close.js": "0dd780280eef870d2f11cb1800e6e9de19e5ead7b9d02b9983852cc8ddbdc79b",
88
93
  "generation-watch-plan.js": "eb60660341f254adc224181ca19dbbb969ef1d676aeaab60b71a8567f52648fe",
89
- "index.js": "0dcbd84ad03ab59919df57081d34a45c3a8d59b3c37ac31249409210ae7107e6",
90
- "magnific-api.js": "39fa9a122577029111965c3e8487565c88ce46b61dec5ca685acf1c76cd3b636",
94
+ "index.js": "2eead50413d076173648623285ac65977ec56d77b1275f3ff801c70f900f4bb5",
95
+ "magnific-api.js": "062ba561037760de347542b5bd7db5def1f940e1d8f147a131e5603dfccd22ab",
96
+ "media-output.js": "01aaaeffa64845a200261258dccedf3116f030fafd783db97e846582ec5c9a26",
91
97
  "network.js": "b45e43b49eea98ca7d80921ebfa6daf8b0a85d2079d4653f9eda682bc82101ae",
92
- "package.json": "9c44eb43a3555cf79bd327318f9a30d3060f22dd2fd534923e303cca1eed7de9",
98
+ "package.json": "1842a0efe6021e197a14b54f6661fb9ccdcd26e92aa09a5ac50af6d3cee4367a",
93
99
  "state-store.js": "c3ee744509f7a6be251cd895406bd1c70827f53cbdc1ac9d1c2a6e48479bfe1e",
94
- "test/magnific-mcp.test.js": "7a61dd19a2f6f9f48213cabf0de6e87e0b6fb73a94f0ea9dbfe9c8568c2cc32d",
95
- "tool.manifest.json": "ff886d95250d279eff097430e6f89405a2bdd488d5f0949277cbc3f57f918950"
100
+ "test/magnific-mcp.test.js": "3af971e5a92cf6bd34111b159723892b3a5310952b036386ae98d3592708ddd0",
101
+ "test/media-output.test.js": "ba3802da6c3e7d3c6ef94fcceb10a0b8547921d0995aa24b8484ddb2fb1a28d9",
102
+ "tool.manifest.json": "7d26e0a101c8df81bcfdf502d6864a157f0e690e5636ce297e28b1ed07f7abc2"
96
103
  }
97
104
  },
98
105
  "master-slave": {
106
+ "version": "0.1.2",
99
107
  "files": {
100
- "README.md": "84d2841d8df31c07065d4fee6e434dc43cad241f3abf63e95efafad51ed69fcb",
108
+ "README.md": "9755dd59d01680236d12b57f87e4bc52568649a0e63b1a96065baf800d8dc1c8",
101
109
  "batch-runner.js": "97756a03b36278cd0315cc16da0c34a7821c322149c51ba6666f1c5081dbecbc",
102
110
  "chat-state-store.js": "50de39aa33432733bb688eb01968e314a32b169324a66d0f0089b2a19ed9c880",
111
+ "command-arguments.js": "ef00f814dee6105e1cd3b8929e974bc071117f162b17e3dcc3dc0ea68e8b1e92",
103
112
  "config.js": "ff1c1cb6701ae1da7a6eb1519ba96a416e48daa73c2155a6f93cf5d64f65cef8",
104
- "index.js": "8586303b3d1bf937932159adbe9b69c1031e6a393300e7d3aca93910ddfab082",
113
+ "index.js": "404db150dee0ecf79cd64bca245c618fa1e2bb324d6bc15f5ac0022b72497c63",
105
114
  "lib/bootstrap-url.js": "f05925cc0f0dff0882f94f9908c6f2c80aa8632cd51f63389381dcbb0f73afb3",
106
115
  "lib/encrypted-frames.js": "47e1b11fafdbbcdfd86a0993a47a774e4f37d6386edeaf8ec1c8511b109728cf",
107
116
  "lib/handshake-crypto.js": "9728b117aad7de53f5f0e255c0fd865ee1a19633368730a7634334d374094578",
@@ -111,12 +120,13 @@
111
120
  "lib/secure-store.js": "b8f365197f8e60d7f81fde6ed1cfc8851b603f6b0783e4cdc9036bb5c99726e1",
112
121
  "master-domain.js": "10b7dfb43eb9939eb5baec54f742076cc73a2add6589a0ff57c51bc79c236faf",
113
122
  "network-session.js": "db2d81a7ef47af29236d963b98e21414a11fef68e8b20895126eaad3f696ba3d",
114
- "package.json": "ef4824ccb46ddb3f901dd6e7a94abbd458152a2e73292ec409470643f45ff396",
123
+ "package.json": "1f37665b860b7f2f5b37cc931dcc9c4ac4fb82d1260fc14c0646fa4d92ade0b3",
115
124
  "remote-runtime.js": "55dd7e577a822be17c2f337798a2d7f44ad0c5b6d68c46490e058282135c4658",
116
125
  "slave-operations.js": "fec2e8addfff98f080284f24f722c1516124e5f6d12d8c03bb3c9cc0c475d1d6",
117
126
  "state-store.js": "c56849a3f1b9c990128276e17963034a7836abacedc44f2e500d5732ebf9e451",
118
127
  "test/batch-runner.test.js": "69f69150eadd18c1ad1bc54f429e6cb5bc0c4492e3c6a6e76c2ce6827780ae41",
119
128
  "test/bootstrap-url.test.js": "62c112b1a38c59ea2c77f797e32873667b52db32386da661a6ae8410490126fe",
129
+ "test/command-arguments.test.js": "360c087edd0a589b28111bb82d06e3e73e93a6b22da0a57cb96f0a7e92a9bd5f",
120
130
  "test/encrypted-frames.test.js": "cfb3195d3a58df7dc570bc7840a21c1841a53e0abc8b92840e0c24ed3435bcc1",
121
131
  "test/handshake-crypto.test.js": "f11d6e95658f2055d8256bd7dfb66b39bedf95bf62a3cec5525b109bb6f9bc95",
122
132
  "test/master-domain.test.js": "7298766db3e6b186cca0109f352766e1bf417a8af12a58dd1c2b78fd1a61ff24",
@@ -129,35 +139,39 @@
129
139
  }
130
140
  },
131
141
  "mcp-client": {
132
- "version": "0.1.0",
142
+ "version": "0.2.0",
143
+ "toolDependencies": {},
133
144
  "files": {
134
- "README.md": "798125171049f939f4487e1a023cb3a11b3c28aae96b2687df1681a11bad8dc0",
145
+ "README.md": "f7317946d27742eebcc443d69e152c0f9f7e1d55b07192a3875cc1a0d623ce3a",
135
146
  "config.js": "b5b05fb242034e2d04b6301e848da9701c95be195ba1cdac2421964e9a7db8c9",
136
- "index.js": "ba828f353ef23cd7acc3a064f859f553705836e4ede5d31ea0824a761cc88c2a",
147
+ "index.js": "eaca434b3f0a7697955e0dd4cf4aa8dd7c59ab297c10f646b8cc4ec3189311e3",
137
148
  "mcp-session.js": "51765b46f410e1cd49647235b611db0b10af20c9707efcacfbe0ff7dabe3c1ff",
138
149
  "network-security.js": "60a020d4e3c7a4784a5a4e7b7246ee34e63ac73ee2316e09a09d10668dc8a7bc",
139
150
  "oauth-device.js": "698aa9255bae47190c63527db7680aaab4f06392a108a0ff6444e32d31b7b89f",
140
151
  "oauth-watch-plan.js": "b1bbed52eeb0e2e50dd52d733897ebd70573fea3ff5f023b3c63347f92633d3e",
141
152
  "package-lock.json": "fd7b6bf4545de4056908bd656a4a4e21b9f84acc7b06d8c1d581a8c84c295e90",
142
- "package.json": "16d423b77a32902671a751b1d673077c789a5bc3c79254bde296e4a4207fc4e3",
153
+ "package.json": "85ac369f959a40da258d268a3ab1d523abba7c225d5c44a903ddae0bcc512d1b",
143
154
  "state-store.js": "a8fb63096b8efdec8de1cb386eff371f1552f3fd71d96f25036e1c724285e0af",
144
- "test/mcp-client.test.js": "188b253343f551303d1ee6ab2adc34e7153282461ba7399b598fe292e78a22a1",
145
- "tool.manifest.json": "5659c398922c914c5bf893404519a30071ee685ab49f34a650ecafd585b4d6ec"
155
+ "test/mcp-client.test.js": "26a7fe3ffa33ad454eced32c7fab12975ac5c0914041dea68cb7e5467e753a10",
156
+ "tool-routing.js": "b3405c9879443cdc257a1e97d4968859a8654e62ff7cfb90ec3a7a992a62e311",
157
+ "tool.manifest.json": "2d64dc40453fba1d5a6743145f759a28b1f6d137fd84c0e15dd41745bd1692d7"
146
158
  }
147
159
  },
148
160
  "official-tool-sync": {
149
- "version": "1.0.0",
161
+ "version": "1.1.0",
150
162
  "toolDependencies": {
151
163
  "trash": "^1.0.0"
152
164
  },
153
165
  "files": {
154
166
  ".gitignore": "4d56952b0fb13bf8f9b6c13a6d4c34a075bac3af447636a1df4335d7576e2f97",
155
167
  "config.js": "744c445b1d2ff65b77f38a5473c24e50a32f4288c4a08c25a874a478086c08c8",
156
- "index.js": "fdd4167c63cd33c8e7640cb7ce09fd618dbd416030aa920407392e4591543e94",
157
- "package.json": "4447cb5d4e0a04526604dfb9820c44af88349c27e208f27baa148686846559da",
168
+ "dependency-installer.js": "dd91072612d4cba2ce83748ffae569067cbb2ebf63d59084572c3a9b77611927",
169
+ "dependency-installer.test.js": "9dc8a8c7d3ea29cfa2bb2d4daef3c02a6e996f9148a27cc499c8fd628fac857f",
170
+ "index.js": "12186107d449868621af98ce8f434fc84b5de09c62a2cb6b2cb67219b2e856a6",
171
+ "package.json": "0e95a190a04ebaf1eea81a90ecdb7b260595eb1ea0afe77f4d4215ccd6a9e949",
158
172
  "sync-lib.js": "c9f2cd7e19370088ab5fd10f6b2ada52c07d2e405674a356d0989f9a0f4984f6",
159
173
  "sync-lib.test.js": "c97cf850d9f42f6b121a458863b048bdcaa6d7d0475642f20742c5862ebf7cc4",
160
- "tool.manifest.json": "8e0f94ad786bdaf9edb1a65cd03438e26c1e9927e8db9a5a39e349e7ef3c6cd3"
174
+ "tool.manifest.json": "00086b52dc969275e6dffc70720ef916493870fff3a27d076fed4ec04a160c75"
161
175
  }
162
176
  },
163
177
  "pr-campaign": {
@@ -186,18 +200,20 @@
186
200
  }
187
201
  },
188
202
  "telemetry-ledger": {
189
- "version": "0.1.0",
203
+ "version": "0.1.1",
190
204
  "files": {
191
- "README.md": "4cf1b8c7addaa0f6a2d802a7ae261293822c2662efac9c10afa844f9fbcf4e1d",
205
+ "README.md": "e74bcf93bc89de151d73a03d60a74a2699436775aa5f93d27cf3dbb59250aec4",
192
206
  "analysis.js": "c0effbff3af519b018e59c0460d2c277b4f7e1422ca2680de217bcb5e8a13136",
193
207
  "config.js": "ddc8543cde5aeda634b8df60628d0024bb03e65b8710cf4878b4c6a7d953a641",
194
- "index.js": "7df14d142a70b725b32ee40741ce1007fd96a080f96a9b2e3e34d917d88621b5",
195
- "package.json": "e662652038c1c5a6a2a4502b308ae89e1acbd3cb6d3fc494512a730ebe9ccb8a",
208
+ "index.js": "87f302af297233f2a1bc89d9be52b1b724478ed72658123ff841fcbcaa13389b",
209
+ "package.json": "f093c7b767dc042518ff6c19ac302b972a03ba34c45a73545079dd76bf525b75",
196
210
  "stats.js": "fc41b065d1f280dc278c53dc4c4baaa385a5bf25416c3e4ff8a153ea624967fb",
197
211
  "storage.js": "099187e270ccc2bd6d7300b78a2ee31a837f98694a23a3b40b20a646cdb1db1e",
198
212
  "test/telemetry.test.js": "312eef22ad960b19a6fe777aecd520952ae20ed03168edbbef8a0f747bee01c0",
199
- "tool.manifest.json": "e4b321a56db9030e5b39b764547769c76bcf282ed019ebba0323bf16a73dbe05",
200
- "validation.js": "1a50c75a5ca1bb7249bb8bfc3f2927b31ff4accd0efb56a48c36df5adae78f61"
213
+ "tool.manifest.json": "960b714ead9b0491581bf9f0f4dc882ce58bfc29cef4b2f5267cd0dbc9c37d48",
214
+ "validation.js": "1a50c75a5ca1bb7249bb8bfc3f2927b31ff4accd0efb56a48c36df5adae78f61",
215
+ "output.js": "e932098d51efdb99f8c39faaae0c5574d7e263f0e8c0875fc57e7a4311e715ea",
216
+ "test/output.test.js": "c18ae93cdf74de3748c1571833dfc1063ec6690219b03fbc7772bae504b6259f"
201
217
  }
202
218
  },
203
219
  "trash": {
@@ -227,17 +243,18 @@
227
243
  }
228
244
  },
229
245
  "x-dm": {
230
- "version": "0.2.0",
246
+ "version": "0.2.1",
231
247
  "toolDependencies": {
232
248
  "browser-session-bridge": "^0.1.0"
233
249
  },
234
250
  "files": {
235
- "config.js": "69a2dcccd10aa2f1ddcc24d52f4ce8fe4a6f5f5a85be64abbdf9dc9e19de0cd4",
236
- "index.js": "83e3eb7fbeea8a5183303e0e56b1d6854ca7ccb800e4cd2ad689a5f13637380f",
237
- "package.json": "3a76a921b1e78e91b1d2a5ae1926b298dfd6b4ee3f716d5382159b474ee400f4",
251
+ "config.js": "ac6eb70c1bc94230bc6df89fc73fc22ac53ccab49926abc3c453f85aca220596",
252
+ "index.js": "d89f70fed0754c61bd7ce31739304e4512ddabf16bc79a1488c164e32d31672d",
253
+ "package.json": "af4d72a99318d04b522773b8489288d191210435ae5543b564e2ce747164386c",
238
254
  "README.md": "503b0ed25ef9a8df3079523ea653178e6e029854b4d199cb8d20be82cc837f9e",
239
255
  "test/x-dm.test.mjs": "06352996e14777358eb62ad5e5d757b0dab5c0696927ed54ff40a5b7cdefcfd0",
240
- "tool.manifest.json": "177e0abac770f89a0f06aa445363393fa38e7f05ad7cd773ea907fa56faed505"
256
+ "tool.manifest.json": "227dc3c4a48948cf72544d4b99ba2c3c5a255f8425e795304881ede73d82d011",
257
+ "browser-cache.js": "f71c20f9ab5f04d9d46c5e2551b348d47baba89a10a07173070298098a6d5551"
241
258
  }
242
259
  }
243
260
  }