pi-harness-runtime 0.9.14 → 0.9.16

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 (175) hide show
  1. package/harness/auto-quota-resume.ts +129 -0
  2. package/harness/e2e/minimax-quota-scraper.ts +10 -4
  3. package/harness/index.ts +8 -0
  4. package/harness/loop-runtime.ts +57 -0
  5. package/index.ts +47 -11
  6. package/mirror.ts +40 -18
  7. package/package.json +1 -1
  8. package/packages/a2a-adapter/package.json +1 -1
  9. package/packages/auth/package.json +1 -1
  10. package/packages/autonomous-refactor/package.json +1 -1
  11. package/packages/autonomous-runtime/README.md +48 -0
  12. package/packages/autonomous-runtime/dist/inbox.d.ts +75 -0
  13. package/packages/autonomous-runtime/dist/inbox.d.ts.map +1 -0
  14. package/packages/autonomous-runtime/dist/inbox.js +212 -0
  15. package/packages/autonomous-runtime/dist/inbox.js.map +1 -0
  16. package/packages/autonomous-runtime/dist/index.d.ts +17 -0
  17. package/packages/autonomous-runtime/dist/index.d.ts.map +1 -0
  18. package/packages/autonomous-runtime/dist/index.js +17 -0
  19. package/packages/autonomous-runtime/dist/index.js.map +1 -0
  20. package/packages/autonomous-runtime/dist/lease.d.ts +78 -0
  21. package/packages/autonomous-runtime/dist/lease.d.ts.map +1 -0
  22. package/packages/autonomous-runtime/dist/lease.js +273 -0
  23. package/packages/autonomous-runtime/dist/lease.js.map +1 -0
  24. package/packages/autonomous-runtime/dist/types.d.ts +160 -0
  25. package/packages/autonomous-runtime/dist/types.d.ts.map +1 -0
  26. package/packages/autonomous-runtime/dist/types.js +31 -0
  27. package/packages/autonomous-runtime/dist/types.js.map +1 -0
  28. package/packages/autonomous-runtime/dist/worker.d.ts +63 -0
  29. package/packages/autonomous-runtime/dist/worker.d.ts.map +1 -0
  30. package/packages/autonomous-runtime/dist/worker.js +133 -0
  31. package/packages/autonomous-runtime/dist/worker.js.map +1 -0
  32. package/packages/autonomous-runtime/package.json +34 -0
  33. package/packages/autonomous-runtime/src/inbox.ts +266 -0
  34. package/packages/autonomous-runtime/src/index.ts +22 -0
  35. package/packages/autonomous-runtime/src/lease.ts +318 -0
  36. package/packages/autonomous-runtime/src/types.ts +257 -0
  37. package/packages/autonomous-runtime/test/autonomous-runtime.test.ts +194 -0
  38. package/packages/autonomous-runtime/test/inbox.test.mjs +266 -0
  39. package/packages/autonomous-runtime/test/inbox.test.ts +80 -0
  40. package/packages/autonomous-runtime/test/types.test.ts +68 -0
  41. package/packages/autonomous-runtime/tsconfig.json +22 -0
  42. package/packages/autonomous-runtime/tsconfig.tsbuildinfo +1 -0
  43. package/packages/cache-strategy/package.json +1 -1
  44. package/packages/capability-registry/package.json +1 -1
  45. package/packages/checkpoint/package.json +1 -1
  46. package/packages/cli-plugin-sdk/package.json +1 -1
  47. package/packages/code-generation/package.json +1 -1
  48. package/packages/code-review/package.json +1 -1
  49. package/packages/codex-adapter/package.json +1 -1
  50. package/packages/context-compiler/package.json +1 -1
  51. package/packages/context-manager/package.json +1 -1
  52. package/packages/cookie-sanitizer/package.json +1 -1
  53. package/packages/cost-optimizer/package.json +1 -1
  54. package/packages/django-plugin/package.json +1 -1
  55. package/packages/doc-generator/package.json +1 -1
  56. package/packages/evaluation-engine/package.json +1 -1
  57. package/packages/evaluation-runner/package.json +1 -1
  58. package/packages/experience-replay/package.json +1 -1
  59. package/packages/feedback-collector/package.json +1 -1
  60. package/packages/framework-detector/package.json +1 -1
  61. package/packages/framework-plugin-sdk/package.json +1 -1
  62. package/packages/frappe-plugin/package.json +1 -1
  63. package/packages/generic-web-plugin/package.json +1 -1
  64. package/packages/health-monitor/package.json +1 -1
  65. package/packages/laravel-plugin/package.json +1 -1
  66. package/packages/learning-engine/package.json +1 -1
  67. package/packages/mcp-adapter/package.json +1 -1
  68. package/packages/memory-engine/package.json +1 -1
  69. package/packages/model-registry/package.json +1 -1
  70. package/packages/nextjs-plugin/package.json +1 -1
  71. package/packages/notification/package.json +1 -1
  72. package/packages/observability/package.json +1 -1
  73. package/packages/performance-optimizer/package.json +1 -1
  74. package/packages/privilege-broker/README.md +45 -0
  75. package/packages/privilege-broker/config/privileges.yaml.example +172 -0
  76. package/packages/privilege-broker/dist/approval.d.ts +23 -0
  77. package/packages/privilege-broker/dist/approval.d.ts.map +1 -0
  78. package/packages/privilege-broker/dist/approval.js +45 -0
  79. package/packages/privilege-broker/dist/approval.js.map +1 -0
  80. package/packages/privilege-broker/dist/audit.d.ts +38 -0
  81. package/packages/privilege-broker/dist/audit.d.ts.map +1 -0
  82. package/packages/privilege-broker/dist/audit.js +125 -0
  83. package/packages/privilege-broker/dist/audit.js.map +1 -0
  84. package/packages/privilege-broker/dist/executor.d.ts +25 -0
  85. package/packages/privilege-broker/dist/executor.d.ts.map +1 -0
  86. package/packages/privilege-broker/dist/executor.js +83 -0
  87. package/packages/privilege-broker/dist/executor.js.map +1 -0
  88. package/packages/privilege-broker/dist/index.d.ts +30 -0
  89. package/packages/privilege-broker/dist/index.d.ts.map +1 -0
  90. package/packages/privilege-broker/dist/index.js +5 -0
  91. package/packages/privilege-broker/dist/index.js.map +1 -0
  92. package/packages/privilege-broker/dist/registry.d.ts +15 -0
  93. package/packages/privilege-broker/dist/registry.d.ts.map +1 -0
  94. package/packages/privilege-broker/dist/registry.js +76 -0
  95. package/packages/privilege-broker/dist/registry.js.map +1 -0
  96. package/packages/privilege-broker/dist/types.d.ts +77 -0
  97. package/packages/privilege-broker/dist/types.d.ts.map +1 -0
  98. package/packages/privilege-broker/dist/types.js +11 -0
  99. package/packages/privilege-broker/dist/types.js.map +1 -0
  100. package/packages/privilege-broker/package.json +35 -0
  101. package/packages/privilege-broker/src/approval.ts +70 -0
  102. package/packages/privilege-broker/src/audit.ts +142 -0
  103. package/packages/privilege-broker/src/executor.ts +110 -0
  104. package/packages/privilege-broker/src/index.ts +46 -0
  105. package/packages/privilege-broker/src/registry.ts +98 -0
  106. package/packages/privilege-broker/src/types.ts +105 -0
  107. package/packages/privilege-broker/tsconfig.json +22 -0
  108. package/packages/privilege-broker/tsconfig.tsbuildinfo +1 -0
  109. package/packages/project-analyzer/package.json +1 -1
  110. package/packages/prompt-compiler/package.json +1 -1
  111. package/packages/prompt-versioning/package.json +1 -1
  112. package/packages/provider-adapter-sdk/package.json +1 -1
  113. package/packages/provider-router/package.json +1 -1
  114. package/packages/provider-selector/package.json +1 -1
  115. package/packages/providers/dist/provider-id.d.ts +2 -0
  116. package/packages/providers/dist/provider-id.d.ts.map +1 -1
  117. package/packages/providers/dist/provider-id.js +9 -0
  118. package/packages/providers/dist/provider-id.js.map +1 -1
  119. package/packages/providers/package.json +1 -1
  120. package/packages/providers/src/provider-id.ts +12 -0
  121. package/packages/quota-manager/package.json +1 -1
  122. package/packages/rate-limiter/package.json +1 -1
  123. package/packages/react-vite-plugin/package.json +1 -1
  124. package/packages/release-manager/package.json +1 -1
  125. package/packages/requirement-compiler/package.json +1 -1
  126. package/packages/runtime/package.json +1 -1
  127. package/packages/scheduler/package.json +1 -1
  128. package/packages/scheduler-adapter/README.md +36 -0
  129. package/packages/scheduler-adapter/dist/cron.d.ts +21 -0
  130. package/packages/scheduler-adapter/dist/cron.d.ts.map +1 -0
  131. package/packages/scheduler-adapter/dist/cron.js +116 -0
  132. package/packages/scheduler-adapter/dist/cron.js.map +1 -0
  133. package/packages/scheduler-adapter/dist/index.d.ts +9 -0
  134. package/packages/scheduler-adapter/dist/index.d.ts.map +1 -0
  135. package/packages/scheduler-adapter/dist/index.js +8 -0
  136. package/packages/scheduler-adapter/dist/index.js.map +1 -0
  137. package/packages/scheduler-adapter/dist/interface.d.ts +61 -0
  138. package/packages/scheduler-adapter/dist/interface.d.ts.map +1 -0
  139. package/packages/scheduler-adapter/dist/interface.js +2 -0
  140. package/packages/scheduler-adapter/dist/interface.js.map +1 -0
  141. package/packages/scheduler-adapter/dist/internal.d.ts +30 -0
  142. package/packages/scheduler-adapter/dist/internal.d.ts.map +1 -0
  143. package/packages/scheduler-adapter/dist/internal.js +82 -0
  144. package/packages/scheduler-adapter/dist/internal.js.map +1 -0
  145. package/packages/scheduler-adapter/dist/systemd.d.ts +31 -0
  146. package/packages/scheduler-adapter/dist/systemd.d.ts.map +1 -0
  147. package/packages/scheduler-adapter/dist/systemd.js +203 -0
  148. package/packages/scheduler-adapter/dist/systemd.js.map +1 -0
  149. package/packages/scheduler-adapter/package.json +32 -0
  150. package/packages/scheduler-adapter/src/cron.ts +123 -0
  151. package/packages/scheduler-adapter/src/index.ts +9 -0
  152. package/packages/scheduler-adapter/src/interface.ts +61 -0
  153. package/packages/scheduler-adapter/src/internal.ts +99 -0
  154. package/packages/scheduler-adapter/src/systemd.ts +221 -0
  155. package/packages/scheduler-adapter/tsconfig.json +22 -0
  156. package/packages/scheduler-adapter/tsconfig.tsbuildinfo +1 -0
  157. package/packages/session/package.json +1 -1
  158. package/packages/shared-context/package.json +1 -1
  159. package/packages/skill-registry/package.json +1 -1
  160. package/packages/sprint-planner/package.json +1 -1
  161. package/packages/task-compiler/package.json +1 -1
  162. package/packages/test-data-generator/package.json +1 -1
  163. package/packages/test-generator/package.json +1 -1
  164. package/packages/token-estimation/package.json +1 -1
  165. package/packages/token-optimizer/package.json +1 -1
  166. package/packages/tui/package.json +1 -1
  167. package/packages/types/dist/runtime-types.d.ts +6 -0
  168. package/packages/types/dist/runtime-types.d.ts.map +1 -1
  169. package/packages/types/dist/runtime-types.js +2 -1
  170. package/packages/types/dist/runtime-types.js.map +1 -1
  171. package/packages/types/package.json +1 -1
  172. package/packages/types/src/ai-providers.ts +73 -0
  173. package/packages/types/src/runtime-types.ts +15 -0
  174. package/packages/types/tsconfig.tsbuildinfo +1 -1
  175. package/packages/worktree/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Scheduler Adapter — Common Interface
3
+ * RFC-0101 §6
4
+ *
5
+ * All scheduler adapters implement this interface.
6
+ * The runtime selects an adapter at install time and uses it for all scheduled tasks.
7
+ */
8
+ // ScheduledTask duplicated here to avoid cross-package import resolution issues
9
+ // in the workspace. Replace with:
10
+ // import type { ScheduledTask } from "@pi/autonomous-runtime";
11
+ export type ScheduledTask = {
12
+ id: string;
13
+ taskTemplate: Record<string, unknown>;
14
+ schedule:
15
+ | { kind: "cron"; expression: string }
16
+ | { kind: "interval"; intervalMs: number }
17
+ | { kind: "once"; at: string };
18
+ enabled: boolean;
19
+ lastFiredAt?: string;
20
+ nextFireAt?: string;
21
+ };
22
+
23
+ /**
24
+ * Supported scheduler adapter backends.
25
+ * Set at install time; can be changed via config.
26
+ */
27
+ export type SchedulerAdapterKind = "systemd" | "cron" | "launchd" | "internal";
28
+
29
+ export interface SchedulerAdapter {
30
+ /** Human-readable name. */
31
+ readonly name: SchedulerAdapterKind;
32
+
33
+ /**
34
+ * Install the scheduler adapter.
35
+ * Idempotent — re-running does not duplicate units.
36
+ * @throws if installation fails (e.g. no systemd on this system)
37
+ */
38
+ install(): Promise<void>;
39
+
40
+ /**
41
+ * Schedule a task. Installs the timer/unit if not yet installed.
42
+ * @param task The scheduled task to materialise
43
+ */
44
+ schedule(task: ScheduledTask): Promise<void>;
45
+
46
+ /**
47
+ * Remove a scheduled task.
48
+ * @param taskId The id of the task to unschedule
49
+ */
50
+ unschedule(taskId: string): Promise<void>;
51
+
52
+ /**
53
+ * List all scheduled tasks currently installed by this adapter.
54
+ */
55
+ listScheduled(): Promise<ScheduledTask[]>;
56
+
57
+ /**
58
+ * Check if the adapter is healthy (e.g. systemd is running).
59
+ */
60
+ healthCheck(): Promise<{ healthy: boolean; error?: string }>;
61
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Scheduler Adapter — Internal (In-Process) Backend
3
+ * RFC-0101 §6
4
+ *
5
+ * Uses in-process setTimeout / setInterval for scheduling.
6
+ * Useful for testing, local development, and environments where
7
+ * systemd/cron are not available.
8
+ */
9
+
10
+ import type { SchedulerAdapter, ScheduledTask } from "./interface.js";
11
+
12
+ interface InternalTask {
13
+ task: ScheduledTask;
14
+ timerId: ReturnType<typeof setTimeout>;
15
+ createdAt: Date;
16
+ }
17
+
18
+ export class InternalAdapter implements SchedulerAdapter {
19
+ readonly name = "internal" as const;
20
+
21
+ private tasks = new Map<string, InternalTask>();
22
+ private handlers = new Map<string, (task: ScheduledTask) => unknown>();
23
+
24
+ async install(): Promise<void> {
25
+ // Nothing to install for in-process scheduling
26
+ }
27
+
28
+ async healthCheck(): Promise<{ healthy: boolean; error?: string }> {
29
+ return { healthy: true };
30
+ }
31
+
32
+ /**
33
+ * Register a task handler before scheduling.
34
+ * The adapter calls `handler(task)` when the task fires.
35
+ */
36
+ setHandler(handler: (task: ScheduledTask) => unknown): void {
37
+ this.handlers.set("default", handler);
38
+ }
39
+
40
+ async schedule(task: ScheduledTask): Promise<void> {
41
+ if (this.tasks.has(task.id)) {
42
+ await this.unschedule(task.id);
43
+ }
44
+
45
+ const handler = this.handlers.get("default");
46
+ if (!handler) {
47
+ throw new Error(
48
+ "[InternalAdapter] No task handler registered. Call setHandler() first.",
49
+ );
50
+ }
51
+
52
+ if (!task.enabled) return; // skip disabled tasks
53
+
54
+ let delayMs: number;
55
+ if (task.schedule.kind === "once") {
56
+ delayMs = new Date(task.schedule.at).getTime() - Date.now();
57
+ } else if (task.schedule.kind === "interval") {
58
+ delayMs = task.schedule.intervalMs;
59
+ } else {
60
+ // cron — resolve to next occurrence (simplified: 1h from now)
61
+ delayMs = 3_600_000;
62
+ }
63
+
64
+ if (delayMs <= 0) delayMs = 1000;
65
+
66
+ const tick = (): void => {
67
+ const t = this.tasks.get(task.id);
68
+ if (!t) return;
69
+ handler(task);
70
+ // Re-schedule if interval
71
+ if (task.schedule.kind === "interval") {
72
+ t.timerId = setTimeout(tick, task.schedule.intervalMs);
73
+ }
74
+ };
75
+
76
+ const timerId = setTimeout(tick, delayMs);
77
+ this.tasks.set(task.id, { task, timerId, createdAt: new Date() });
78
+ }
79
+
80
+ async unschedule(taskId: string): Promise<void> {
81
+ const t = this.tasks.get(taskId);
82
+ if (t) {
83
+ clearTimeout(t.timerId);
84
+ this.tasks.delete(taskId);
85
+ }
86
+ }
87
+
88
+ async listScheduled(): Promise<ScheduledTask[]> {
89
+ return Array.from(this.tasks.values()).map((t) => t.task);
90
+ }
91
+
92
+ /** Fire a task immediately (useful for testing). */
93
+ fireNow(taskId: string): void {
94
+ const t = this.tasks.get(taskId);
95
+ if (!t) return;
96
+ const handler = this.handlers.get("default");
97
+ if (handler) handler(t.task);
98
+ }
99
+ }
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Scheduler Adapter — systemd Backend
3
+ * RFC-0101 §6
4
+ *
5
+ * Uses systemd user timers as the scheduling backend.
6
+ * Each scheduled task becomes a .timer + .service unit pair.
7
+ * Works on any Linux system with systemd (no root required for user units).
8
+ */
9
+
10
+ import { execSync } from "node:child_process";
11
+ import { existsSync, mkdirSync, writeFileSync, unlinkSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ import { homedir } from "node:os";
14
+ import type { SchedulerAdapter, ScheduledTask } from "./interface.js";
15
+
16
+ // ScheduledTask duplicated here — see interface.ts for details.
17
+
18
+ /**
19
+ * Install systemd user units (runs `systemctl --user`).
20
+ * Must call this once before scheduling.
21
+ */
22
+ export class SystemdAdapter implements SchedulerAdapter {
23
+ readonly name = "systemd" as const;
24
+ /** Per-task unit files live in ~/.config/systemd/user/ */
25
+ private readonly unitDir: string;
26
+ private installed = false;
27
+
28
+ constructor(unitDir?: string) {
29
+ this.unitDir = unitDir ?? join(homedir(), ".config", "systemd", "user");
30
+ }
31
+
32
+ async install(): Promise<void> {
33
+ // Verify systemd user mode is available
34
+ try {
35
+ execSync("systemctl --user show-environment >/dev/null 2>&1", {
36
+ stdio: "pipe",
37
+ });
38
+ } catch {
39
+ throw new Error(
40
+ "[SystemdAdapter] systemd user mode is not available. " +
41
+ "Ensure systemd is running and $SYSTEMD_RUNTIME_DIRECTORY is set.",
42
+ );
43
+ }
44
+
45
+ // Ensure unit directory exists
46
+ if (!existsSync(this.unitDir)) {
47
+ mkdirSync(this.unitDir, { recursive: true });
48
+ }
49
+
50
+ // Reload systemd to pick up new units
51
+ try {
52
+ execSync("systemctl --user daemon-reload", { stdio: "pipe" });
53
+ } catch {
54
+ throw new Error("[SystemdAdapter] Failed to reload systemd daemon");
55
+ }
56
+
57
+ this.installed = true;
58
+ }
59
+
60
+ async schedule(task: ScheduledTask): Promise<void> {
61
+ if (!this.installed) await this.install();
62
+
63
+ const id = task.id.replace(/[^a-zA-Z0-9_-]/g, "-");
64
+ const base = `pi-runtime-${id}`;
65
+ const servicePath = join(this.unitDir, `${base}.service`);
66
+ const timerPath = join(this.unitDir, `${base}.timer`);
67
+ const scriptPath = join(this.unitDir, `${base}.sh`);
68
+
69
+ // Build the run script
70
+ const runScript = [
71
+ "#!/usr/bin/env bash",
72
+ `# Generated by pi-harness-runtime — ${new Date().toISOString()}`,
73
+ "",
74
+ `PI_HARNESS_TASK_ID="${task.id}" \\`,
75
+ `PI_HARNESS_WORKER_ID="$(hostname)-$(id -u)" \\`,
76
+ `PI_HARNESS_RUNTIME_ROOT="${process.env.PI_HARNESS_RUNTIME_ROOT ?? join(homedir(), ".pi", "harness")}" \\`,
77
+ `exec "${process.env.PI_HARNESS_RUNTIME_ROOT}/bin/run-task.sh" \\`,
78
+ ` --task-id "${task.id}" \\`,
79
+ ` --worker-id "$PI_HARNESS_WORKER_ID"`,
80
+ ].join("\n");
81
+
82
+ // Write script
83
+ writeFileSync(scriptPath, runScript, { mode: 0o755 });
84
+
85
+ // Service unit: runs the script
86
+ const service = [
87
+ "[Unit]",
88
+ "Description=pi-harness-runtime task: ${task.id}",
89
+ "[Service]",
90
+ `ExecStart=${scriptPath}`,
91
+ "Type=oneshot",
92
+ "Environment=SYSTEMD_EXEC_PID=$$",
93
+ "[Install]",
94
+ "WantedBy=default.target",
95
+ ].join("\n");
96
+
97
+ // Timer unit: schedules the service
98
+ const timerContent = [
99
+ "[Unit]",
100
+ `Description=pi-harness-runtime schedule: ${task.id}`,
101
+ "[Timer]",
102
+ this._toTimerLine(task.schedule),
103
+ "Persistent=true",
104
+ "[Install]",
105
+ "WantedBy=timers.target",
106
+ ].join("\n");
107
+
108
+ writeFileSync(servicePath, service);
109
+ writeFileSync(timerPath, timerContent);
110
+
111
+ // Reload and enable
112
+ try {
113
+ execSync("systemctl --user daemon-reload", { stdio: "pipe" });
114
+ execSync(`systemctl --user enable ${base}.timer`, { stdio: "pipe" });
115
+ execSync(`systemctl --user start ${base}.timer`, { stdio: "pipe" });
116
+ } catch (e) {
117
+ const err = e as { message?: string };
118
+ throw new Error(
119
+ `[SystemdAdapter] Failed to enable/start ${base}.timer: ${err?.message ?? String(e)}`,
120
+ );
121
+ }
122
+ }
123
+
124
+ async unschedule(taskId: string): Promise<void> {
125
+ const id = taskId.replace(/[^a-zA-Z0-9_-]/g, "-");
126
+ const base = `pi-runtime-${id}`;
127
+ const servicePath = join(this.unitDir, `${base}.service`);
128
+ const timerPath = join(this.unitDir, `${base}.timer`);
129
+ const scriptPath = join(this.unitDir, `${base}.sh`);
130
+
131
+ // Stop and disable
132
+ try {
133
+ execSync(`systemctl --user stop ${base}.timer`, { stdio: "pipe" });
134
+ execSync(`systemctl --user disable ${base}.timer`, { stdio: "pipe" });
135
+ } catch {
136
+ // Ignore if not running
137
+ }
138
+
139
+ // Remove files
140
+ for (const p of [servicePath, timerPath, scriptPath]) {
141
+ try {
142
+ if (existsSync(p)) unlinkSync(p);
143
+ } catch {
144
+ // Ignore cleanup errors
145
+ }
146
+ }
147
+
148
+ try {
149
+ execSync("systemctl --user daemon-reload", { stdio: "pipe" });
150
+ } catch {
151
+ // Ignore
152
+ }
153
+ }
154
+
155
+ async listScheduled(): Promise<ScheduledTask[]> {
156
+ try {
157
+ const out = execSync(
158
+ "systemctl --user list-timers --all --no-legend --output json 2>/dev/null | grep pi-runtime- || true",
159
+ { encoding: "utf8" },
160
+ );
161
+
162
+ if (!out.trim()) return [];
163
+
164
+ let timers: Array<{ Unit?: string; Next?: string }> = [];
165
+ try {
166
+ timers = JSON.parse(out.trim());
167
+ } catch {
168
+ return [];
169
+ }
170
+
171
+ return timers
172
+ .filter((t) => t.Unit?.startsWith("pi-runtime-"))
173
+ .map((t) => {
174
+ const id = (t.Unit ?? "").replace(/^pi-runtime-(.+)\.timer$/, "$1");
175
+ return {
176
+ id,
177
+ taskTemplate: {},
178
+ schedule: { kind: "interval" as const, intervalMs: 0 },
179
+ enabled: true,
180
+ } satisfies ScheduledTask;
181
+ });
182
+ } catch {
183
+ return [];
184
+ }
185
+ }
186
+
187
+ /** Convert a schedule to a systemd.timer OnCalendar or OnUnitActiveSec line. */
188
+ private _toTimerLine(schedule: ScheduledTask["schedule"]): string {
189
+ if (schedule.kind === "cron") {
190
+ // Convert cron to systemd calendar format
191
+ const parts = schedule.expression.trim().split(/\s+/);
192
+ if (parts.length >= 5) {
193
+ const [min, hour, dom, month] = parts;
194
+ return `OnCalendar=${dom}.${month}.* ${hour}:${min.padStart(2, "0")}`;
195
+ }
196
+ return `OnCalendar=${schedule.expression}`;
197
+ }
198
+ if (schedule.kind === "interval") {
199
+ const sec = Math.round(schedule.intervalMs / 1000);
200
+ if (sec >= 86400) return `OnUnitActiveSec=${Math.round(sec / 86400)}d`;
201
+ if (sec >= 3600) return `OnUnitActiveSec=${Math.round(sec / 3600)}h`;
202
+ if (sec >= 60) return `OnUnitActiveSec=${Math.round(sec / 60)}min`;
203
+ return `OnUnitActiveSec=${sec}s`;
204
+ }
205
+ if (schedule.kind === "once") {
206
+ return `OnCalendar=${new Date(schedule.at).toISOString().split("T").join(" ")}`;
207
+ }
208
+ return "OnUnitActiveSec=1h"; // fallback
209
+ }
210
+
211
+ async healthCheck(): Promise<{ healthy: boolean; error?: string }> {
212
+ try {
213
+ execSync("systemctl --user show-environment >/dev/null 2>&1", {
214
+ stdio: "pipe",
215
+ });
216
+ return { healthy: true };
217
+ } catch {
218
+ return { healthy: false, error: "systemd user mode not available" };
219
+ }
220
+ }
221
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ES2022",
5
+ "moduleResolution": "bundler",
6
+ "lib": ["ES2022", "DOM"],
7
+ "outDir": "./dist",
8
+ "rootDir": "./src",
9
+ "declaration": true,
10
+ "declarationMap": true,
11
+ "sourceMap": true,
12
+ "strict": true,
13
+ "esModuleInterop": true,
14
+ "skipLibCheck": true,
15
+ "forceConsistentCasingInFileNames": true,
16
+ "resolveJsonModule": true,
17
+ "composite": true,
18
+ "types": ["node"]
19
+ },
20
+ "include": ["src/**/*"],
21
+ "exclude": ["node_modules", "dist", "test"]
22
+ }
@@ -0,0 +1 @@
1
+ {"version":"7.0.2","root":[[59,63]],"packageJsons":["../../node_modules/string_decoder/package.json","./node_modules/@types/node/node_modules/undici-types/package.json","./node_modules/@types/node/package.json","./package.json"],"missingPackageJsons":["../../node_modules/@types/assert/package.json","../../node_modules/@types/assert/strict/package.json","../../node_modules/@types/async_hooks/package.json","../../node_modules/@types/buffer/package.json","../../node_modules/@types/child_process/package.json","../../node_modules/@types/cluster/package.json","../../node_modules/@types/console/package.json","../../node_modules/@types/constants/package.json","../../node_modules/@types/crypto/package.json","../../node_modules/@types/dgram/package.json","../../node_modules/@types/diagnostics_channel/package.json","../../node_modules/@types/dns/package.json","../../node_modules/@types/dns/promises/package.json","../../node_modules/@types/domain/package.json","../../node_modules/@types/events/package.json","../../node_modules/@types/fs/package.json","../../node_modules/@types/fs/promises/package.json","../../node_modules/@types/http/package.json","../../node_modules/@types/http2/package.json","../../node_modules/@types/https/package.json","../../node_modules/@types/inspector/package.json","../../node_modules/@types/inspector/promises/package.json","../../node_modules/@types/module/package.json","../../node_modules/@types/net/package.json","../../node_modules/@types/os/package.json","../../node_modules/@types/path/package.json","../../node_modules/@types/path/posix/package.json","../../node_modules/@types/path/win32/package.json","../../node_modules/@types/perf_hooks/package.json","../../node_modules/@types/process/package.json","../../node_modules/@types/punycode/package.json","../../node_modules/@types/querystring/package.json","../../node_modules/@types/readline/package.json","../../node_modules/@types/readline/promises/package.json","../../node_modules/@types/repl/package.json","../../node_modules/@types/stream/consumers/package.json","../../node_modules/@types/stream/package.json","../../node_modules/@types/stream/promises/package.json","../../node_modules/@types/stream/web/package.json","../../node_modules/@types/string_decoder/package.json","../../node_modules/@types/timers/package.json","../../node_modules/@types/timers/promises/package.json","../../node_modules/@types/tls/package.json","../../node_modules/@types/trace_events/package.json","../../node_modules/@types/tty/package.json","../../node_modules/@types/url/package.json","../../node_modules/@types/util/package.json","../../node_modules/@types/util/types/package.json","../../node_modules/@types/v8/package.json","../../node_modules/@types/vm/package.json","../../node_modules/@types/wasi/package.json","../../node_modules/@types/worker_threads/package.json","../../node_modules/@types/zlib/package.json","../../node_modules/assert/package.json","../../node_modules/assert/strict/package.json","../../node_modules/async_hooks/package.json","../../node_modules/buffer/package.json","../../node_modules/child_process/package.json","../../node_modules/cluster/package.json","../../node_modules/console/package.json","../../node_modules/constants/package.json","../../node_modules/crypto/package.json","../../node_modules/dgram/package.json","../../node_modules/diagnostics_channel/package.json","../../node_modules/dns/package.json","../../node_modules/dns/promises/package.json","../../node_modules/domain/package.json","../../node_modules/events/package.json","../../node_modules/fs/package.json","../../node_modules/fs/promises/package.json","../../node_modules/http/package.json","../../node_modules/http2/package.json","../../node_modules/https/package.json","../../node_modules/inspector/package.json","../../node_modules/inspector/promises/package.json","../../node_modules/module/package.json","../../node_modules/net/package.json","../../node_modules/os/package.json","../../node_modules/path/package.json","../../node_modules/path/posix/package.json","../../node_modules/path/win32/package.json","../../node_modules/perf_hooks/package.json","../../node_modules/process/package.json","../../node_modules/punycode/package.json","../../node_modules/querystring/package.json","../../node_modules/readline/package.json","../../node_modules/readline/promises/package.json","../../node_modules/repl/package.json","../../node_modules/stream/consumers/package.json","../../node_modules/stream/package.json","../../node_modules/stream/promises/package.json","../../node_modules/stream/web/package.json","../../node_modules/timers/package.json","../../node_modules/timers/promises/package.json","../../node_modules/tls/package.json","../../node_modules/trace_events/package.json","../../node_modules/tty/package.json","../../node_modules/url/package.json","../../node_modules/util/package.json","../../node_modules/util/types/package.json","../../node_modules/v8/package.json","../../node_modules/vm/package.json","../../node_modules/wasi/package.json","../../node_modules/worker_threads/package.json","../../node_modules/zlib/package.json","./node_modules/@types/assert/package.json","./node_modules/@types/assert/strict/package.json","./node_modules/@types/async_hooks/package.json","./node_modules/@types/buffer/package.json","./node_modules/@types/child_process/package.json","./node_modules/@types/cluster/package.json","./node_modules/@types/console/package.json","./node_modules/@types/constants/package.json","./node_modules/@types/crypto/package.json","./node_modules/@types/dgram/package.json","./node_modules/@types/diagnostics_channel/package.json","./node_modules/@types/dns/package.json","./node_modules/@types/dns/promises/package.json","./node_modules/@types/domain/package.json","./node_modules/@types/events/package.json","./node_modules/@types/fs/package.json","./node_modules/@types/fs/promises/package.json","./node_modules/@types/http/package.json","./node_modules/@types/http2/package.json","./node_modules/@types/https/package.json","./node_modules/@types/inspector/package.json","./node_modules/@types/inspector/promises/package.json","./node_modules/@types/module/package.json","./node_modules/@types/net/package.json","./node_modules/@types/node/assert/package.json","./node_modules/@types/node/compatibility/package.json","./node_modules/@types/node/dns/package.json","./node_modules/@types/node/fs/package.json","./node_modules/@types/node/node_modules/assert/package.json","./node_modules/@types/node/node_modules/assert/strict/package.json","./node_modules/@types/node/node_modules/async_hooks/package.json","./node_modules/@types/node/node_modules/buffer/package.json","./node_modules/@types/node/node_modules/child_process/package.json","./node_modules/@types/node/node_modules/cluster/package.json","./node_modules/@types/node/node_modules/console/package.json","./node_modules/@types/node/node_modules/constants/package.json","./node_modules/@types/node/node_modules/crypto/package.json","./node_modules/@types/node/node_modules/dgram/package.json","./node_modules/@types/node/node_modules/diagnostics_channel/package.json","./node_modules/@types/node/node_modules/dns/package.json","./node_modules/@types/node/node_modules/dns/promises/package.json","./node_modules/@types/node/node_modules/domain/package.json","./node_modules/@types/node/node_modules/events/package.json","./node_modules/@types/node/node_modules/fs/package.json","./node_modules/@types/node/node_modules/fs/promises/package.json","./node_modules/@types/node/node_modules/http/package.json","./node_modules/@types/node/node_modules/http2/package.json","./node_modules/@types/node/node_modules/https/package.json","./node_modules/@types/node/node_modules/inspector/package.json","./node_modules/@types/node/node_modules/inspector/promises/package.json","./node_modules/@types/node/node_modules/module/package.json","./node_modules/@types/node/node_modules/net/package.json","./node_modules/@types/node/node_modules/os/package.json","./node_modules/@types/node/node_modules/path/package.json","./node_modules/@types/node/node_modules/path/posix/package.json","./node_modules/@types/node/node_modules/path/win32/package.json","./node_modules/@types/node/node_modules/perf_hooks/package.json","./node_modules/@types/node/node_modules/process/package.json","./node_modules/@types/node/node_modules/punycode/package.json","./node_modules/@types/node/node_modules/querystring/package.json","./node_modules/@types/node/node_modules/readline/package.json","./node_modules/@types/node/node_modules/readline/promises/package.json","./node_modules/@types/node/node_modules/repl/package.json","./node_modules/@types/node/node_modules/stream/consumers/package.json","./node_modules/@types/node/node_modules/stream/package.json","./node_modules/@types/node/node_modules/stream/promises/package.json","./node_modules/@types/node/node_modules/stream/web/package.json","./node_modules/@types/node/node_modules/string_decoder/package.json","./node_modules/@types/node/node_modules/timers/package.json","./node_modules/@types/node/node_modules/timers/promises/package.json","./node_modules/@types/node/node_modules/tls/package.json","./node_modules/@types/node/node_modules/trace_events/package.json","./node_modules/@types/node/node_modules/tty/package.json","./node_modules/@types/node/node_modules/url/package.json","./node_modules/@types/node/node_modules/util/package.json","./node_modules/@types/node/node_modules/util/types/package.json","./node_modules/@types/node/node_modules/v8/package.json","./node_modules/@types/node/node_modules/vm/package.json","./node_modules/@types/node/node_modules/wasi/package.json","./node_modules/@types/node/node_modules/worker_threads/package.json","./node_modules/@types/node/node_modules/zlib/package.json","./node_modules/@types/node/readline/package.json","./node_modules/@types/node/stream/package.json","./node_modules/@types/node/timers/package.json","./node_modules/@types/node/web-globals/package.json","./node_modules/@types/os/package.json","./node_modules/@types/path/package.json","./node_modules/@types/path/posix/package.json","./node_modules/@types/path/win32/package.json","./node_modules/@types/perf_hooks/package.json","./node_modules/@types/process/package.json","./node_modules/@types/punycode/package.json","./node_modules/@types/querystring/package.json","./node_modules/@types/readline/package.json","./node_modules/@types/readline/promises/package.json","./node_modules/@types/repl/package.json","./node_modules/@types/stream/consumers/package.json","./node_modules/@types/stream/package.json","./node_modules/@types/stream/promises/package.json","./node_modules/@types/stream/web/package.json","./node_modules/@types/string_decoder/package.json","./node_modules/@types/timers/package.json","./node_modules/@types/timers/promises/package.json","./node_modules/@types/tls/package.json","./node_modules/@types/trace_events/package.json","./node_modules/@types/tty/package.json","./node_modules/@types/url/package.json","./node_modules/@types/util/package.json","./node_modules/@types/util/types/package.json","./node_modules/@types/v8/package.json","./node_modules/@types/vm/package.json","./node_modules/@types/wasi/package.json","./node_modules/@types/worker_threads/package.json","./node_modules/@types/zlib/package.json","./node_modules/assert/package.json","./node_modules/assert/strict/package.json","./node_modules/async_hooks/package.json","./node_modules/buffer/package.json","./node_modules/child_process/package.json","./node_modules/cluster/package.json","./node_modules/console/package.json","./node_modules/constants/package.json","./node_modules/crypto/package.json","./node_modules/dgram/package.json","./node_modules/diagnostics_channel/package.json","./node_modules/dns/package.json","./node_modules/dns/promises/package.json","./node_modules/domain/package.json","./node_modules/events/package.json","./node_modules/fs/package.json","./node_modules/fs/promises/package.json","./node_modules/http/package.json","./node_modules/http2/package.json","./node_modules/https/package.json","./node_modules/inspector/package.json","./node_modules/inspector/promises/package.json","./node_modules/module/package.json","./node_modules/net/package.json","./node_modules/os/package.json","./node_modules/path/package.json","./node_modules/path/posix/package.json","./node_modules/path/win32/package.json","./node_modules/perf_hooks/package.json","./node_modules/process/package.json","./node_modules/punycode/package.json","./node_modules/querystring/package.json","./node_modules/readline/package.json","./node_modules/readline/promises/package.json","./node_modules/repl/package.json","./node_modules/stream/consumers/package.json","./node_modules/stream/package.json","./node_modules/stream/promises/package.json","./node_modules/stream/web/package.json","./node_modules/string_decoder/package.json","./node_modules/timers/package.json","./node_modules/timers/promises/package.json","./node_modules/tls/package.json","./node_modules/trace_events/package.json","./node_modules/tty/package.json","./node_modules/url/package.json","./node_modules/util/package.json","./node_modules/util/types/package.json","./node_modules/v8/package.json","./node_modules/vm/package.json","./node_modules/wasi/package.json","./node_modules/worker_threads/package.json","./node_modules/zlib/package.json"],"fileNames":["lib.es5.d.ts","lib.es2015.d.ts","lib.es2016.d.ts","lib.es2017.d.ts","lib.es2018.d.ts","lib.es2019.d.ts","lib.es2020.d.ts","lib.es2021.d.ts","lib.es2022.d.ts","lib.dom.d.ts","lib.es2015.core.d.ts","lib.es2015.collection.d.ts","lib.es2015.generator.d.ts","lib.es2015.iterable.d.ts","lib.es2015.promise.d.ts","lib.es2015.proxy.d.ts","lib.es2015.reflect.d.ts","lib.es2015.symbol.d.ts","lib.es2015.symbol.wellknown.d.ts","lib.es2016.array.include.d.ts","lib.es2016.intl.d.ts","lib.es2017.arraybuffer.d.ts","lib.es2017.date.d.ts","lib.es2017.object.d.ts","lib.es2017.sharedmemory.d.ts","lib.es2017.string.d.ts","lib.es2017.intl.d.ts","lib.es2017.typedarrays.d.ts","lib.es2018.asyncgenerator.d.ts","lib.es2018.asynciterable.d.ts","lib.es2018.intl.d.ts","lib.es2018.promise.d.ts","lib.es2018.regexp.d.ts","lib.es2019.array.d.ts","lib.es2019.object.d.ts","lib.es2019.string.d.ts","lib.es2019.symbol.d.ts","lib.es2019.intl.d.ts","lib.es2020.bigint.d.ts","lib.es2020.date.d.ts","lib.es2020.promise.d.ts","lib.es2020.sharedmemory.d.ts","lib.es2020.string.d.ts","lib.es2020.symbol.wellknown.d.ts","lib.es2020.intl.d.ts","lib.es2020.number.d.ts","lib.es2021.promise.d.ts","lib.es2021.string.d.ts","lib.es2021.weakref.d.ts","lib.es2021.intl.d.ts","lib.es2022.array.d.ts","lib.es2022.error.d.ts","lib.es2022.intl.d.ts","lib.es2022.object.d.ts","lib.es2022.string.d.ts","lib.es2022.regexp.d.ts","lib.decorators.d.ts","lib.decorators.legacy.d.ts","./src/interface.ts","./src/cron.ts","./src/systemd.ts","./src/internal.ts","./src/index.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/@types/node/node_modules/undici-types/header.d.ts","./node_modules/@types/node/node_modules/undici-types/readable.d.ts","./node_modules/@types/node/node_modules/undici-types/file.d.ts","./node_modules/@types/node/node_modules/undici-types/fetch.d.ts","./node_modules/@types/node/node_modules/undici-types/formdata.d.ts","./node_modules/@types/node/node_modules/undici-types/connector.d.ts","./node_modules/@types/node/node_modules/undici-types/client.d.ts","./node_modules/@types/node/node_modules/undici-types/errors.d.ts","./node_modules/@types/node/node_modules/undici-types/dispatcher.d.ts","./node_modules/@types/node/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/@types/node/node_modules/undici-types/global-origin.d.ts","./node_modules/@types/node/node_modules/undici-types/pool-stats.d.ts","./node_modules/@types/node/node_modules/undici-types/pool.d.ts","./node_modules/@types/node/node_modules/undici-types/handlers.d.ts","./node_modules/@types/node/node_modules/undici-types/balanced-pool.d.ts","./node_modules/@types/node/node_modules/undici-types/agent.d.ts","./node_modules/@types/node/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/@types/node/node_modules/undici-types/mock-agent.d.ts","./node_modules/@types/node/node_modules/undici-types/mock-client.d.ts","./node_modules/@types/node/node_modules/undici-types/mock-pool.d.ts","./node_modules/@types/node/node_modules/undici-types/mock-errors.d.ts","./node_modules/@types/node/node_modules/undici-types/proxy-agent.d.ts","./node_modules/@types/node/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/@types/node/node_modules/undici-types/retry-handler.d.ts","./node_modules/@types/node/node_modules/undici-types/retry-agent.d.ts","./node_modules/@types/node/node_modules/undici-types/api.d.ts","./node_modules/@types/node/node_modules/undici-types/interceptors.d.ts","./node_modules/@types/node/node_modules/undici-types/util.d.ts","./node_modules/@types/node/node_modules/undici-types/cookies.d.ts","./node_modules/@types/node/node_modules/undici-types/patch.d.ts","./node_modules/@types/node/node_modules/undici-types/websocket.d.ts","./node_modules/@types/node/node_modules/undici-types/eventsource.d.ts","./node_modules/@types/node/node_modules/undici-types/filereader.d.ts","./node_modules/@types/node/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/@types/node/node_modules/undici-types/content-type.d.ts","./node_modules/@types/node/node_modules/undici-types/cache.d.ts","./node_modules/@types/node/node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"16934abaab7026ac114da441aabea1a0","affectsGlobalScope":true,"impliedNodeFormat":1},"d4306fb2e47f74835e8674ffac07d76f","e437c5c1302869326c3bb93da85bbbcf","e4324975a566567b21d350615f1fc6ac","333b1b9a2a9ac3b8497dba5c63b5ba50","6cffacd662b6eb5fa7a36aa2ea366bfa","b4c34f9c23304dbef2d23698637ed638","e5cb86a5fc491796ecd1d2dd348d208f","feb6c6fb19cdb246a5d8acb36a6901c7",{"version":"aae8996e8b5684814785a42cbbefcd79","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"926204c28cd3d073865348473ae28d2e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f25e42c801b2cb3cf2b39792006a9beb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6344b55f26a4e81d9608777dbfb877dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3c0ed28e53d3695b363e256ec1c023fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4c2761daba7f17141c25baa0821ac5da","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b87656acabd63e69379ff6ffcfe52fc7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"597469522da047a5af5222cc6989f405","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1708ea4d34dc37fadadc63ca01127e80","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"55d97a8c6fbf34a30450a7b1e5f7a298","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0ee05eb59426d33e374226d8dcfa708b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e347c14030993906efcfbb88915b6a05","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b0231263857c9b6a03641acdc9280ceb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3b15c4a83b598cacb4067676e6f0abed","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b417d97b7934cef63b1889abec0bbfbf","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"09a6cf4032ebba60ce22a501e663f881","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2b056277dd138e8f5650fc04e20eaa8d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e22cc07e3f3cc242ba52fa3f8ea1fc58","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2c45da767a1bfbb220848df1bc4029e4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b44c3e0fbaf2130cdcf6ac38b120ffa1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b612fb5cf8e5d964b92063a75207632a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"02705151a5e1551b9162a9ed8ab763f7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"41025e398be9215d32e4337335da8f0b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"52684c2b1f353a5538e4f275182a54cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6dedb6a4f90d1df3a6fbe5693e44886c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ca3f36fe3562c07e0f0d71c2bebd3f6d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"409974d6129befbb8226ddd1c6558568","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4d9cfde2a1ae1b4925f1f9bc10848e5d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7e1daecc66dd564144e3bb1a0266b5fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a8e1d9bb35fd0637f2f9fd2b2a54f2ec","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4f168501772a6543182765bfd5f2fbfe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a19c80aad1b2162103496f5ba293a732","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b69afa63cd5d059851c78adb2856ee09","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ae2fc5d954e9b0f5feee3d481b953c27","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1cfd3091a071d8b6feec15277643bafe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1da2c1f258970fd3cc91184f69e91a9d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a0d87491913d843139e0c993650a3235","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4ef72aa378127e7b7abba915b0110b1e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3ec74c6a7d4463f0254db3a74cf75646","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"84c2bdfa470d075526cce6322d81b0b6","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0b3844c2b8c73e4e1ab91431411cad11","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4fc71cf4a15b8d99675a31df77f26e07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d1b49564ddaeca3df5b6dbae925d2242","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6a25be566d60ccfc2d6e8b7bfdeefa83","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8a20e27646985dfd58c57ca6566553dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9969f02ad3cdcbf4f709405cda44167f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9c9be4792a7a4f42c15ae7360bf28779","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f64453cbf9671f28158677fa5c43967a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"33f317af5428801f944a478d2c1e38e5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"306e6c63a7f96d55443c21981816b482","signature":"56096b46c4bd0d08b6b7ed239ce59f3b","impliedNodeFormat":1},{"version":"7295425c815d38df6ce42f4344084105","signature":"8c27494f5e7da8ece57a5f25a18d6c2f","impliedNodeFormat":1},{"version":"3443d1487f80ec8392692687b63563a0","signature":"de306a0fe6c7fee23005c7df40a80072","impliedNodeFormat":1},{"version":"2a2aa2495722de437246aa66c2a66a2b","signature":"a7f1fa2b326e991d3d350f1c6a76dff4","impliedNodeFormat":1},{"version":"2ac3abbfbf8f4659ef00e5a5c91e0f2e","signature":"ac44b58d9d3f7d8692885b6feb2ce671","impliedNodeFormat":1},{"version":"90630acdc4134173bcf216f187bd3010","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"913b52a39743d1c11984e4e124b1f3a8","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2514e9a2749c0fc18d2f478e9e1e641e","affectsGlobalScope":true,"impliedNodeFormat":1},"fe51d7a9bcdbcce1e65bbcf39b212298",{"version":"849a1873c4e917b0887368c1be897faa","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"c46c3108bde06d3b1fc6f802eb09eeeb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1332add604574cf529fb33b23304b296","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9af0a7e3ef1c42cd066b9f8d365cc1ba","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9eca652586205dc5b07f9ba57b1c8500","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ec5f75939754ce94652189ec7d0d3058","affectsGlobalScope":true,"impliedNodeFormat":1},"628b774b54637325e286752c79c12432","bb1f9e3091b88e9d0e93b7198c736af3","514fd35e5eb35bb2e5cbb908af0a0aa2","ed57ae88565308729f2327f26d684976","dcd932d6b0038f2e250e30dc10125b22","9508c917bd7e458745e222a82dd24ef0","fabf86f455f96b90538cc26320ab2765","14550b4cd9f433e0addd8b6d67614d23","cf0ac6aebc25cb780674653aaeee688e","35fef7bac8048f583e4ce6eaa0c2a4c0","6752dc653fc7a333027249fd851fdb62","b9ad7e689b46dfba362c1bf174e69018","8b0a2930dfabdf27c69c6bb1eeabcdc8","4513b1ed15523d247040689f37fa9db2","5c0c499eed773a750903d9497beafacd","2377da227d1bac82ff7b3f2081ddf8d3","beef985b474fefeb80d27fb2c8778371","c79fc9d9f09ae598a374ae7c0b5284a4","f2caa3cebb1e6be855519004830a6be0","8ebc9f2a77c900e710801214c5cb994c","ec617a0e0577dd6a3210c3b067ecb325","1db5d06e485bd82d6d5f6e36925a8714","24b864518967840216c779b5e5f00975","8719cd8047700bfb6046798390053823","f2840afb502c94db92dab0fb8d27812f","a7e7d08b372210c203745d3eac61a411","531183cc80535e0e94226d720e5eb038","f627eb958ca52c85e42f04dce4661f86","9a43fc665bce9012a3d5fe1b574ff4dc","13f4b4da6546a34719fd6bde15fb63dd","a589216508844bfc00e62fc2d97fda45","865aea1c3209e31b076cb6fe780e769e","12e64aaf26af0f5c8f1b263dd66e3feb","928971ebbcdf5b093ef37669b33bddf6","b744265d8ad12b7d4d5c5dc35d18d44e","eff32168b8348b822afeed9cbf61afa7","9aafd1f29b4d8861c1c6c34bf83c0721",{"version":"a127795c4dad633990c87aa0b86831e5","affectsGlobalScope":true,"impliedNodeFormat":1},"4ef82d390af85e719a46d566e229dd83","7deced3ef46e082f97d49bb71622526a","fa7acb320bbf7da8f76e431437143034",{"version":"ee57e9bfec6167b488ced231a7bf233d","affectsGlobalScope":true,"impliedNodeFormat":1},"7aa99080b86233d5b21416907d7a75a6","7d6a8df1becce5c270da2093e7835920",{"version":"c37fea1584ced70492ff5748ed570abd","affectsGlobalScope":true,"impliedNodeFormat":1},"b2b472cd0bf0f8d5f022e00ca1c401f4",{"version":"e22c8fb0fc65df14299c6c94cf729b3c","affectsGlobalScope":true,"impliedNodeFormat":1},"a84efb87b57f78ea0b0577edaacd8b33","814e0c2cc2a92531b6dc5d2a1767a6e1","79ac55b2d493df83277d681e4d64a992","7ab3b7243211fa08af307609be231d6c","7fd0f028e135bdf15ff757781a2f4ba9",{"version":"cab5b406d3defff17c931e41fa98aeb1","affectsGlobalScope":true,"impliedNodeFormat":1},"aa7dc1db3d208fb91418794a18539d4c","e9b8fc3c9291fc5701e219c0407e973d","b8f5d7bb61117f48a99b0cecaa75d186","4eee02126a80c6573103e22b942b0386","1d3b57f542db6054f952f8076b3c6a3a","4e0ba29e69c1176d4b909ad8a85a2695",{"version":"e5d25a206975fb43b72d246ed86fd7fe","affectsGlobalScope":true,"impliedNodeFormat":1},"a5525d047b8b84dac8b2e21fa393f465","86308ea691fd06825dd9a3ce0f1e901a","44782881f424302151e0de8fdaa39575",{"version":"f0ef68e9c53d126a7b3bfc1ae9f2c7c4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"71259a408a4178e5f0795188b4d802f1","affectsGlobalScope":true,"impliedNodeFormat":1},"eb80d821e5e931dcccee2697f3e249e2","961969874f5ee12ed3429d3d0c82de02","9a62058bc2d476e807cc6594eed72adb","40cbc4bb3b225b03c54255154dada07d","6534825a8bda3eeecde9bca9e3a99712","09a582ab2a73806ab5887ea413b3d55a","17bf20c066f28d82e59096464112bc39","c8206d568b54e5ea06131963eecd576a","15878f4f50c2e562c0768eb735c2aed5",{"version":"2939c9bf76087f5c43b7ed44aeab6853","affectsGlobalScope":true,"impliedNodeFormat":1},"7b844f3801adf7e09ea25ec5f39f9a86","46c937d243665015f13587ac0db55909",{"version":"1f29cf27395029939dd41fce4f0c5653","affectsGlobalScope":true,"impliedNodeFormat":1},"f026c594d60114f10583261f6499df38","1ac553606580aeec204cce24c38b2e3f","3c29bf7066a67e7151f563fc1c4e56cb","00d49834780046c2d6a7da3e50d83cca",{"version":"377c78771ee061f2b4e59d5eb5a28782","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7293552290431bff8ef5f13e6f7fcbfc","affectsGlobalScope":true,"impliedNodeFormat":1},"9453ee3aca6a51ae747057fbc6388cf2","6c491c1508bd3e1df0f45f38b07243c2","1f99b8445612afcfaae0f8591d8d18ac",{"version":"bbd4e0ea8a847a4b60ba7d5741985c9d","affectsGlobalScope":true,"impliedNodeFormat":1},"f57ef54941c62bf28f3beafb86025735","7b6c16d46b33570aaef9d0fdc4f02f14"],"fileIdsList":[[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[64,65,66,69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[67,68,69,70,71,72,73,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,86,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,77,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,79,82,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[69,77,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[69,74,75,78,81,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,89,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,74,80,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,103,104,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,78,82,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[69,103,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[69,76,77,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[69,76,77,78,79,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,97,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,89,90,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,80,82,90,91,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,81,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,74,77,82,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,82,86,90,91,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,86,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,80,82,85,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,74,79,82,89,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,77,82,103,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,156,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,159,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162],[69,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[69,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162],[69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],[59,69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[59,60,61,62,69,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162]],"options":{"composite":true,"declaration":true,"declarationMap":true,"module":7,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"sourceMap":true,"target":9,"esModuleInterop":true},"referencedMap":[[57,1],[58,1],[10,1],[12,1],[11,1],[2,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[3,1],[21,1],[22,1],[4,1],[23,1],[27,1],[24,1],[25,1],[26,1],[28,1],[29,1],[30,1],[5,1],[31,1],[32,1],[33,1],[34,1],[6,1],[38,1],[35,1],[36,1],[37,1],[39,1],[7,1],[40,1],[45,1],[46,1],[41,1],[42,1],[43,1],[44,1],[8,1],[50,1],[47,1],[48,1],[49,1],[51,1],[9,1],[52,1],[53,1],[54,1],[56,1],[55,1],[1,1],[112,2],[113,3],[114,4],[69,5],[115,6],[116,7],[117,8],[64,1],[67,9],[65,1],[66,1],[118,10],[119,11],[120,12],[121,13],[122,14],[123,15],[124,16],[125,17],[126,18],[127,19],[128,20],[70,1],[68,1],[129,21],[130,22],[131,23],[163,24],[132,25],[133,26],[134,27],[89,28],[99,29],[88,28],[109,30],[80,31],[79,1],[108,32],[102,33],[107,31],[82,34],[96,35],[81,36],[105,37],[77,38],[76,32],[106,39],[78,40],[83,29],[84,1],[87,29],[74,1],[110,41],[100,42],[91,43],[92,44],[94,45],[90,46],[93,47],[103,32],[85,48],[86,49],[95,50],[75,1],[98,42],[97,29],[101,1],[104,51],[135,52],[136,53],[137,54],[138,55],[139,56],[140,57],[141,58],[142,59],[143,60],[144,61],[145,62],[147,63],[146,64],[148,65],[149,66],[150,67],[151,68],[152,69],[153,70],[154,71],[155,72],[156,73],[157,74],[158,75],[159,76],[160,77],[71,1],[72,1],[73,1],[111,78],[161,79],[162,80],[60,81],[63,82],[59,1],[62,81],[61,81]],"latestChangedDtsFile":"./dist/internal.d.ts"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/session",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "Session management system for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/shared-context",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "pi-harness-runtime — shared-context",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/skill-registry",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "Skill Registry for pi-harness-runtime — dynamic skill discovery and invocation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/sprint-planner",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "type": "module",
5
5
  "description": "Sprint planning engine for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/task-compiler",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "Task Compiler for pi-harness-runtime — produces deterministic task DAG from CompiledRequirement",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/test-data-generator",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "Test data generation for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/test-generator",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "Auto-Test Generator — generate unit and E2E tests from source code (RFC-0013)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/token-estimation",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "pi-harness-runtime — token-estimation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/token-optimizer",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "Token Budget Optimizer — maximize prompt value within token limits (RFC-0011)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/tui",
3
- "version": "0.9.11",
3
+ "version": "0.9.15",
4
4
  "description": "pi-harness-runtime — tui",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",