@frankzhang2026/opencode-android-orchestrator 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +75 -2
  2. package/LICENSE +21 -0
  3. package/README.md +391 -6
  4. package/THIRD_PARTY_NOTICES.md +119 -0
  5. package/dist/cli.js +243 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/compatibility/hooks.d.ts +23 -0
  8. package/dist/compatibility/hooks.d.ts.map +1 -0
  9. package/dist/compatibility/hooks.js +44 -0
  10. package/dist/compatibility/hooks.js.map +1 -0
  11. package/dist/compatibility/versions.d.ts +19 -0
  12. package/dist/compatibility/versions.d.ts.map +1 -1
  13. package/dist/compatibility/versions.js +116 -0
  14. package/dist/compatibility/versions.js.map +1 -1
  15. package/dist/doctor/index.d.ts +36 -0
  16. package/dist/doctor/index.d.ts.map +1 -0
  17. package/dist/doctor/index.js +289 -0
  18. package/dist/doctor/index.js.map +1 -0
  19. package/dist/doctor/installation.d.ts +4 -0
  20. package/dist/doctor/installation.d.ts.map +1 -0
  21. package/dist/doctor/installation.js +472 -0
  22. package/dist/doctor/installation.js.map +1 -0
  23. package/dist/index.d.ts +13 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +13 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/installer/adaptive-templates.d.ts +56 -0
  28. package/dist/installer/adaptive-templates.d.ts.map +1 -0
  29. package/dist/installer/adaptive-templates.js +167 -0
  30. package/dist/installer/adaptive-templates.js.map +1 -0
  31. package/dist/installer/agents-config.d.ts +19 -0
  32. package/dist/installer/agents-config.d.ts.map +1 -0
  33. package/dist/installer/agents-config.js +147 -0
  34. package/dist/installer/agents-config.js.map +1 -0
  35. package/dist/installer/android-project.d.ts +36 -0
  36. package/dist/installer/android-project.d.ts.map +1 -0
  37. package/dist/installer/android-project.js +418 -0
  38. package/dist/installer/android-project.js.map +1 -0
  39. package/dist/installer/index.d.ts +8 -0
  40. package/dist/installer/index.d.ts.map +1 -1
  41. package/dist/installer/index.js +8 -1
  42. package/dist/installer/index.js.map +1 -1
  43. package/dist/installer/init.d.ts +67 -0
  44. package/dist/installer/init.d.ts.map +1 -0
  45. package/dist/installer/init.js +389 -0
  46. package/dist/installer/init.js.map +1 -0
  47. package/dist/installer/install-manifest.d.ts +132 -0
  48. package/dist/installer/install-manifest.d.ts.map +1 -0
  49. package/dist/installer/install-manifest.js +1047 -0
  50. package/dist/installer/install-manifest.js.map +1 -0
  51. package/dist/installer/opencode-config.d.ts +31 -0
  52. package/dist/installer/opencode-config.d.ts.map +1 -0
  53. package/dist/installer/opencode-config.js +296 -0
  54. package/dist/installer/opencode-config.js.map +1 -0
  55. package/dist/installer/uninstall.d.ts +70 -0
  56. package/dist/installer/uninstall.d.ts.map +1 -0
  57. package/dist/installer/uninstall.js +770 -0
  58. package/dist/installer/uninstall.js.map +1 -0
  59. package/dist/installer/upgrade.d.ts +96 -0
  60. package/dist/installer/upgrade.d.ts.map +1 -0
  61. package/dist/installer/upgrade.js +1106 -0
  62. package/dist/installer/upgrade.js.map +1 -0
  63. package/dist/opencode-plugin.d.ts +2 -0
  64. package/dist/opencode-plugin.d.ts.map +1 -0
  65. package/dist/opencode-plugin.js +4 -0
  66. package/dist/opencode-plugin.js.map +1 -0
  67. package/dist/plugin/index.d.ts +7 -2
  68. package/dist/plugin/index.d.ts.map +1 -1
  69. package/dist/plugin/index.js +23 -6
  70. package/dist/plugin/index.js.map +1 -1
  71. package/dist/tools/index.d.ts +35 -1
  72. package/dist/tools/index.d.ts.map +1 -1
  73. package/dist/tools/index.js +197 -1
  74. package/dist/tools/index.js.map +1 -1
  75. package/docs/MIGRATION.md +173 -0
  76. package/docs/SECURITY.md +212 -0
  77. package/docs/TROUBLESHOOTING.md +172 -0
  78. package/package.json +23 -5
  79. package/templates/.opencode/agents/scheduled-coder.md +115 -0
  80. package/templates/.opencode/agents/scheduled-planner.md +166 -0
  81. package/templates/.opencode/agents/scheduled-reviewer.md +88 -0
  82. package/templates/.opencode/commands/abort-task.md +20 -0
  83. package/templates/.opencode/commands/acceptance.md +20 -0
  84. package/templates/.opencode/commands/change.md +23 -0
  85. package/templates/.opencode/commands/resume-review.md +19 -0
  86. package/templates/.opencode/skills/scheduled-quality-coder/SKILL.md +93 -0
  87. package/templates/.opencode/skills/scheduled-quality-orchestrator/SKILL.md +216 -0
  88. package/templates/.opencode/skills/scheduled-quality-reviewer/SKILL.md +68 -0
  89. package/templates/AGENTS.md.fragment +19 -0
  90. package/templates/README.md +52 -9
  91. package/templates/automation/config.json +50 -0
  92. package/templates/automation/config.schema.json +163 -0
  93. package/templates/automation/task-contract.schema.json +71 -0
  94. package/templates/automation/tasks/TASK-TEMPLATE.json.example +53 -0
  95. package/templates/docs/plans/README.md +26 -0
  96. package/templates/installation-manifest.schema.json +201 -0
  97. package/templates/scripts/automation/abort-task.sh +171 -0
  98. package/templates/scripts/automation/accept-and-integrate.sh +263 -0
  99. package/templates/scripts/automation/acceptance-report.sh +132 -0
  100. package/templates/scripts/automation/approve-and-run.sh +175 -0
  101. package/templates/scripts/automation/begin-review.sh +18 -0
  102. package/templates/scripts/automation/block-task.sh +26 -0
  103. package/templates/scripts/automation/claim-task.sh +74 -0
  104. package/templates/scripts/automation/integration-scope-gate.sh +103 -0
  105. package/templates/scripts/automation/lib.sh +697 -0
  106. package/templates/scripts/automation/orchestrate-task.sh +119 -0
  107. package/templates/scripts/automation/preflight.sh +206 -0
  108. package/templates/scripts/automation/prepare-contract-review.sh +101 -0
  109. package/templates/scripts/automation/quality-gate.sh +72 -0
  110. package/templates/scripts/automation/queue-task.sh +35 -0
  111. package/templates/scripts/automation/record-red.sh +57 -0
  112. package/templates/scripts/automation/resume-review-fix.sh +32 -0
  113. package/templates/scripts/automation/resume-review.sh +120 -0
  114. package/templates/scripts/automation/scope-gate.sh +110 -0
  115. package/templates/scripts/automation/select-task.sh +34 -0
  116. package/templates/scripts/automation/shadow-run.sh +24 -0
  117. package/templates/scripts/automation/show-acceptance-review.sh +111 -0
  118. package/templates/scripts/automation/status.sh +125 -0
  119. package/templates/scripts/automation/submit-review.sh +73 -0
  120. package/templates/scripts/automation/tests/run-tests.sh +699 -0
  121. package/templates/scripts/automation/transition-state.sh +21 -0
  122. package/templates/scripts/automation/validate-contract.sh +87 -0
  123. package/templates/scripts/automation/verify-integration.sh +37 -0
  124. package/templates/scripts/automation/verify-task.sh +54 -0
@@ -0,0 +1,472 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstatSync, readFileSync, } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { planAdaptiveProjectTemplates, } from "../installer/adaptive-templates.js";
6
+ import { planAgentsConfigMerge } from "../installer/agents-config.js";
7
+ import { INSTALLATION_MANIFEST_RELATIVE_PATH, readInstallationManifest, verifyInstallationIntegrity, } from "../installer/install-manifest.js";
8
+ import { ORCHESTRATOR_PACKAGE_NAME, ORCHESTRATOR_PACKAGE_VERSION, mergeOpenCodeConfigText, } from "../installer/opencode-config.js";
9
+ export const EXPECTED_MANAGED_FILE_COUNT = 45;
10
+ const OPENCODE_TEMPLATE_PATHS = [
11
+ ".opencode/agents/scheduled-coder.md",
12
+ ".opencode/agents/scheduled-planner.md",
13
+ ".opencode/agents/scheduled-reviewer.md",
14
+ ".opencode/commands/abort-task.md",
15
+ ".opencode/commands/acceptance.md",
16
+ ".opencode/commands/change.md",
17
+ ".opencode/commands/resume-review.md",
18
+ ".opencode/skills/scheduled-quality-coder/SKILL.md",
19
+ ".opencode/skills/scheduled-quality-orchestrator/SKILL.md",
20
+ ".opencode/skills/scheduled-quality-reviewer/SKILL.md",
21
+ ];
22
+ const AUTOMATION_SCRIPT_PATHS = [
23
+ "scripts/automation/abort-task.sh",
24
+ "scripts/automation/accept-and-integrate.sh",
25
+ "scripts/automation/acceptance-report.sh",
26
+ "scripts/automation/approve-and-run.sh",
27
+ "scripts/automation/begin-review.sh",
28
+ "scripts/automation/block-task.sh",
29
+ "scripts/automation/claim-task.sh",
30
+ "scripts/automation/integration-scope-gate.sh",
31
+ "scripts/automation/lib.sh",
32
+ "scripts/automation/orchestrate-task.sh",
33
+ "scripts/automation/preflight.sh",
34
+ "scripts/automation/prepare-contract-review.sh",
35
+ "scripts/automation/quality-gate.sh",
36
+ "scripts/automation/queue-task.sh",
37
+ "scripts/automation/record-red.sh",
38
+ "scripts/automation/resume-review-fix.sh",
39
+ "scripts/automation/resume-review.sh",
40
+ "scripts/automation/scope-gate.sh",
41
+ "scripts/automation/select-task.sh",
42
+ "scripts/automation/shadow-run.sh",
43
+ "scripts/automation/show-acceptance-review.sh",
44
+ "scripts/automation/status.sh",
45
+ "scripts/automation/submit-review.sh",
46
+ "scripts/automation/tests/run-tests.sh",
47
+ "scripts/automation/transition-state.sh",
48
+ "scripts/automation/validate-contract.sh",
49
+ "scripts/automation/verify-integration.sh",
50
+ "scripts/automation/verify-task.sh",
51
+ ];
52
+ const OTHER_TEMPLATE_PATHS = [
53
+ "automation/config.schema.json",
54
+ "automation/task-contract.schema.json",
55
+ "docs/plans/README.md",
56
+ ];
57
+ const EXPECTED_FIXED_FILES = [
58
+ ...OPENCODE_TEMPLATE_PATHS.map((path) => ({
59
+ path,
60
+ source: `templates/${path}`,
61
+ strategy: "copy",
62
+ mode: 0o644,
63
+ })),
64
+ ...AUTOMATION_SCRIPT_PATHS.map((path) => ({
65
+ path,
66
+ source: `templates/${path}`,
67
+ strategy: "copy",
68
+ mode: 0o755,
69
+ })),
70
+ ...OTHER_TEMPLATE_PATHS.map((path) => ({
71
+ path,
72
+ source: `templates/${path}`,
73
+ strategy: "copy",
74
+ mode: 0o644,
75
+ })),
76
+ {
77
+ path: "automation/config.json",
78
+ source: "generated/adaptive-automation-config",
79
+ strategy: "generate",
80
+ },
81
+ {
82
+ path: "automation/tasks/TASK-TEMPLATE.json.example",
83
+ source: "generated/adaptive-task-contract-example",
84
+ strategy: "generate",
85
+ },
86
+ {
87
+ path: "AGENTS.md",
88
+ source: "generated/agents-managed-block-merge",
89
+ strategy: "merge",
90
+ },
91
+ ];
92
+ const OPENCODE_CONFIG_SOURCE = "generated/opencode-config-merge";
93
+ function filesystemErrorCode(error) {
94
+ if (typeof error === "object" &&
95
+ error !== null &&
96
+ "code" in error &&
97
+ typeof error.code === "string") {
98
+ return error.code;
99
+ }
100
+ return null;
101
+ }
102
+ function errorDetails(error) {
103
+ if (typeof error === "object" &&
104
+ error !== null &&
105
+ "details" in error &&
106
+ Array.isArray(error.details) &&
107
+ error.details.every((detail) => typeof detail === "string")) {
108
+ return [
109
+ error instanceof Error ? error.message : String(error),
110
+ ...error.details,
111
+ ];
112
+ }
113
+ return [error instanceof Error ? error.message : String(error)];
114
+ }
115
+ function sha256(content) {
116
+ return createHash("sha256").update(content).digest("hex");
117
+ }
118
+ function formatMode(mode) {
119
+ return `0${mode.toString(8).padStart(3, "0")}`;
120
+ }
121
+ function templateRoot() {
122
+ return fileURLToPath(new URL("../../templates/", import.meta.url));
123
+ }
124
+ function inspectRegularFile(targetDirectory, relativePath) {
125
+ const segments = relativePath.split("/");
126
+ let current = targetDirectory;
127
+ for (const segment of segments.slice(0, -1)) {
128
+ current = join(current, segment);
129
+ try {
130
+ const stats = lstatSync(current);
131
+ if (stats.isSymbolicLink()) {
132
+ return {
133
+ ok: false,
134
+ reason: `symbolic-link ancestor: ${current}`,
135
+ };
136
+ }
137
+ if (!stats.isDirectory()) {
138
+ return { ok: false, reason: `parent is not a directory: ${current}` };
139
+ }
140
+ }
141
+ catch (error) {
142
+ return {
143
+ ok: false,
144
+ reason: filesystemErrorCode(error) === "ENOENT"
145
+ ? `missing parent: ${current}`
146
+ : `unreadable parent: ${current}`,
147
+ };
148
+ }
149
+ }
150
+ const absolutePath = join(targetDirectory, ...segments);
151
+ try {
152
+ const stats = lstatSync(absolutePath);
153
+ if (stats.isSymbolicLink()) {
154
+ return { ok: false, reason: "path is a symbolic link" };
155
+ }
156
+ if (!stats.isFile()) {
157
+ return { ok: false, reason: "path is not a regular file" };
158
+ }
159
+ return {
160
+ ok: true,
161
+ file: {
162
+ content: readFileSync(absolutePath),
163
+ mode: stats.mode & 0o777,
164
+ },
165
+ };
166
+ }
167
+ catch (error) {
168
+ return {
169
+ ok: false,
170
+ reason: filesystemErrorCode(error) === "ENOENT"
171
+ ? "file is missing"
172
+ : error instanceof Error
173
+ ? error.message
174
+ : String(error),
175
+ };
176
+ }
177
+ }
178
+ function manifestInventoryIssues(manifest) {
179
+ const issues = [];
180
+ if (manifest.package.name !== ORCHESTRATOR_PACKAGE_NAME) {
181
+ issues.push(`Package name is ${manifest.package.name}; expected ${ORCHESTRATOR_PACKAGE_NAME}.`);
182
+ }
183
+ if (manifest.package.version !== ORCHESTRATOR_PACKAGE_VERSION) {
184
+ issues.push(`Package version is ${manifest.package.version}; expected ${ORCHESTRATOR_PACKAGE_VERSION}.`);
185
+ }
186
+ if (manifest.installation.state !== "installed") {
187
+ issues.push(`Installation state is ${manifest.installation.state}; expected installed.`);
188
+ }
189
+ if (manifest.files.length !== EXPECTED_MANAGED_FILE_COUNT) {
190
+ issues.push(`Manifest tracks ${manifest.files.length} files; expected ${EXPECTED_MANAGED_FILE_COUNT}.`);
191
+ }
192
+ const actualByPath = new Map(manifest.files.map((file) => [file.path, file]));
193
+ for (const expected of EXPECTED_FIXED_FILES) {
194
+ const actual = actualByPath.get(expected.path);
195
+ if (actual === undefined) {
196
+ issues.push(`Missing manifest entry: ${expected.path}`);
197
+ continue;
198
+ }
199
+ if (actual.source !== expected.source ||
200
+ actual.strategy !== expected.strategy) {
201
+ issues.push(`${expected.path}: expected ${expected.strategy} from ${expected.source}.`);
202
+ }
203
+ if (expected.mode !== undefined && actual.mode !== expected.mode) {
204
+ issues.push(`${expected.path}: manifest mode ${formatMode(actual.mode)}; expected ${formatMode(expected.mode)}.`);
205
+ }
206
+ if (expected.strategy === "copy") {
207
+ const packaged = inspectRegularFile(templateRoot(), expected.path);
208
+ if (!packaged.ok) {
209
+ issues.push(`Packaged template ${expected.path}: ${packaged.reason}.`);
210
+ }
211
+ else {
212
+ const packagedSha256 = sha256(packaged.file.content);
213
+ if (actual.sha256 !== packagedSha256 ||
214
+ actual.size !== packaged.file.content.byteLength) {
215
+ issues.push(`${expected.path}: manifest content does not match the packaged ${ORCHESTRATOR_PACKAGE_VERSION} template.`);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ const configEntries = manifest.files.filter((file) => file.source === OPENCODE_CONFIG_SOURCE);
221
+ if (configEntries.length !== 1) {
222
+ issues.push(`Expected exactly one OpenCode configuration entry; found ${configEntries.length}.`);
223
+ }
224
+ else {
225
+ const config = configEntries[0];
226
+ if (!(config.path === "opencode.json" || config.path === "opencode.jsonc") ||
227
+ config.strategy !== "merge") {
228
+ issues.push("OpenCode configuration must merge opencode.json or opencode.jsonc.");
229
+ }
230
+ }
231
+ const expectedPaths = new Set(EXPECTED_FIXED_FILES.map((file) => file.path));
232
+ for (const file of manifest.files) {
233
+ const isOpenCodeConfig = file.source === OPENCODE_CONFIG_SOURCE &&
234
+ (file.path === "opencode.json" || file.path === "opencode.jsonc");
235
+ if (!expectedPaths.has(file.path) && !isOpenCodeConfig) {
236
+ issues.push(`Unexpected manifest entry: ${file.path}`);
237
+ }
238
+ }
239
+ return issues;
240
+ }
241
+ function blockedCheck(id, label, reason) {
242
+ return {
243
+ id,
244
+ label,
245
+ status: "fail",
246
+ summary: "Unable to inspect this installation area.",
247
+ details: [reason],
248
+ };
249
+ }
250
+ function blockedInstallationChecks(reason) {
251
+ return [
252
+ blockedCheck("managed-resources", "Managed resources", reason),
253
+ blockedCheck("managed-permissions", "Managed permissions", reason),
254
+ blockedCheck("installation-backups", "Installation backups", reason),
255
+ blockedCheck("managed-configuration", "Managed configuration", reason),
256
+ ];
257
+ }
258
+ function managedResourceCheck(manifest, inspections) {
259
+ const failures = [];
260
+ for (const file of manifest.files) {
261
+ const inspection = inspections.get(file.path);
262
+ if (inspection === undefined || !inspection.ok) {
263
+ failures.push(`${file.path}: ${inspection?.reason ?? "inspection result is missing"}`);
264
+ continue;
265
+ }
266
+ const actualSha256 = sha256(inspection.file.content);
267
+ if (inspection.file.content.byteLength !== file.size ||
268
+ actualSha256 !== file.sha256) {
269
+ failures.push(`${file.path}: SHA-256 or size mismatch (actual ${actualSha256}).`);
270
+ }
271
+ }
272
+ return {
273
+ id: "managed-resources",
274
+ label: "Managed resources",
275
+ status: failures.length === 0 ? "pass" : "fail",
276
+ summary: failures.length === 0
277
+ ? `All ${manifest.files.length} managed files match the manifest.`
278
+ : `${failures.length} managed file(s) are missing, unsafe, or modified.`,
279
+ details: failures,
280
+ };
281
+ }
282
+ function managedPermissionCheck(manifest, inspections) {
283
+ const failures = [];
284
+ for (const file of manifest.files) {
285
+ const inspection = inspections.get(file.path);
286
+ if (inspection === undefined || !inspection.ok) {
287
+ failures.push(`${file.path}: ${inspection?.reason ?? "inspection result is missing"}`);
288
+ }
289
+ else if (inspection.file.mode !== file.mode) {
290
+ failures.push(`${file.path}: mode ${formatMode(inspection.file.mode)}; expected ${formatMode(file.mode)}.`);
291
+ }
292
+ }
293
+ return {
294
+ id: "managed-permissions",
295
+ label: "Managed permissions",
296
+ status: failures.length === 0 ? "pass" : "fail",
297
+ summary: failures.length === 0
298
+ ? `All managed modes match; ${AUTOMATION_SCRIPT_PATHS.length} automation scripts are executable.`
299
+ : `${failures.length} managed path(s) have unsafe or unexpected permissions.`,
300
+ details: failures,
301
+ };
302
+ }
303
+ function installationBackupCheck(targetDirectory, manifest) {
304
+ try {
305
+ const integrity = verifyInstallationIntegrity(targetDirectory);
306
+ const failures = integrity.checks
307
+ .filter((check) => !(check.backup === "match" || check.backup === "not-required"))
308
+ .map((check) => `${check.path}: backup is ${check.backup}.`);
309
+ const backupCount = manifest.files.filter((file) => file.previous.existed).length;
310
+ return {
311
+ id: "installation-backups",
312
+ label: "Installation backups",
313
+ status: failures.length === 0 ? "pass" : "fail",
314
+ summary: failures.length === 0
315
+ ? `${backupCount} required original-file backup(s) match the manifest.`
316
+ : `${failures.length} required backup(s) failed integrity checks.`,
317
+ details: failures,
318
+ };
319
+ }
320
+ catch (error) {
321
+ return {
322
+ id: "installation-backups",
323
+ label: "Installation backups",
324
+ status: "fail",
325
+ summary: "Installation backups could not be verified.",
326
+ details: errorDetails(error),
327
+ };
328
+ }
329
+ }
330
+ function isRecord(value) {
331
+ return typeof value === "object" && value !== null && !Array.isArray(value);
332
+ }
333
+ function canonicalJson(value) {
334
+ if (Array.isArray(value)) {
335
+ return value.map(canonicalJson);
336
+ }
337
+ if (isRecord(value)) {
338
+ return Object.fromEntries(Object.entries(value)
339
+ .sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
340
+ .map(([key, entry]) => [key, canonicalJson(entry)]));
341
+ }
342
+ return value;
343
+ }
344
+ function jsonMatches(left, right) {
345
+ return JSON.stringify(canonicalJson(left)) === JSON.stringify(canonicalJson(right));
346
+ }
347
+ function inspectedText(path, inspections) {
348
+ const inspection = inspections.get(path);
349
+ if (inspection === undefined || !inspection.ok) {
350
+ throw new Error(`${path}: ${inspection?.reason ?? "inspection result is missing"}`);
351
+ }
352
+ return inspection.file.content.toString("utf8");
353
+ }
354
+ function managedConfigurationCheck(targetDirectory, manifest, inspections) {
355
+ const failures = [];
356
+ const details = [];
357
+ const openCodeConfig = manifest.files.find((file) => file.source === OPENCODE_CONFIG_SOURCE);
358
+ if (openCodeConfig === undefined) {
359
+ failures.push("OpenCode configuration is not tracked by the manifest.");
360
+ }
361
+ else {
362
+ try {
363
+ const merge = mergeOpenCodeConfigText(inspectedText(openCodeConfig.path, inspections));
364
+ if (merge.changed) {
365
+ failures.push(`${openCodeConfig.path}: required pinned plugin references are missing.`);
366
+ }
367
+ else {
368
+ details.push(`OpenCode configuration: ${openCodeConfig.path}`);
369
+ }
370
+ }
371
+ catch (error) {
372
+ failures.push(...errorDetails(error).map((detail) => `${openCodeConfig.path}: ${detail}`));
373
+ }
374
+ }
375
+ try {
376
+ const agentsPlan = planAgentsConfigMerge(targetDirectory);
377
+ if (agentsPlan.changed) {
378
+ failures.push("AGENTS.md: the exact bounded managed block is missing.");
379
+ }
380
+ else {
381
+ details.push("AGENTS managed block: present and unchanged");
382
+ }
383
+ }
384
+ catch (error) {
385
+ failures.push(...errorDetails(error).map((detail) => `AGENTS.md: ${detail}`));
386
+ }
387
+ try {
388
+ const automationConfig = JSON.parse(inspectedText("automation/config.json", inspections));
389
+ if (!isRecord(automationConfig) || !isRecord(automationConfig.androidProject)) {
390
+ throw new Error("automation config must contain an androidProject object");
391
+ }
392
+ const primaryModule = automationConfig.androidProject.primaryModule;
393
+ if (typeof primaryModule !== "string") {
394
+ throw new Error("androidProject.primaryModule must be a string");
395
+ }
396
+ const expected = planAdaptiveProjectTemplates(targetDirectory, {
397
+ primaryModule,
398
+ });
399
+ if (!jsonMatches(automationConfig, expected.automationConfig)) {
400
+ failures.push("automation/config.json: configuration no longer matches the detected Android project and packaged safe defaults.");
401
+ }
402
+ else {
403
+ details.push(`Automation primary module: ${primaryModule}`);
404
+ }
405
+ const taskExample = JSON.parse(inspectedText("automation/tasks/TASK-TEMPLATE.json.example", inspections));
406
+ if (!jsonMatches(taskExample, expected.taskContractExample)) {
407
+ failures.push("automation/tasks/TASK-TEMPLATE.json.example: example no longer matches the detected primary module.");
408
+ }
409
+ }
410
+ catch (error) {
411
+ failures.push(...errorDetails(error));
412
+ }
413
+ return {
414
+ id: "managed-configuration",
415
+ label: "Managed configuration",
416
+ status: failures.length === 0 ? "pass" : "fail",
417
+ summary: failures.length === 0
418
+ ? "OpenCode, AGENTS, and adaptive Android configuration are consistent."
419
+ : `${failures.length} managed configuration issue(s) were found.`,
420
+ details: failures.length === 0 ? details : failures,
421
+ };
422
+ }
423
+ export function installationDoctorChecks(targetDirectory) {
424
+ let manifest;
425
+ try {
426
+ manifest = readInstallationManifest(targetDirectory);
427
+ }
428
+ catch (error) {
429
+ const details = errorDetails(error);
430
+ return [
431
+ {
432
+ id: "installation-manifest",
433
+ label: "Installation manifest",
434
+ status: "fail",
435
+ summary: "A valid installation manifest could not be loaded.",
436
+ details,
437
+ },
438
+ ...blockedInstallationChecks(details.join("; ")),
439
+ ];
440
+ }
441
+ const manifestIssues = manifestInventoryIssues(manifest);
442
+ const manifestInspection = inspectRegularFile(targetDirectory, INSTALLATION_MANIFEST_RELATIVE_PATH);
443
+ if (!manifestInspection.ok) {
444
+ manifestIssues.push(`${INSTALLATION_MANIFEST_RELATIVE_PATH}: ${manifestInspection.reason}`);
445
+ }
446
+ else if (manifestInspection.file.mode !== 0o600) {
447
+ manifestIssues.push(`${INSTALLATION_MANIFEST_RELATIVE_PATH}: mode ${formatMode(manifestInspection.file.mode)}; expected 0600.`);
448
+ }
449
+ const manifestCheck = {
450
+ id: "installation-manifest",
451
+ label: "Installation manifest",
452
+ status: manifestIssues.length === 0 ? "pass" : "fail",
453
+ summary: manifestIssues.length === 0
454
+ ? `${ORCHESTRATOR_PACKAGE_NAME}@${ORCHESTRATOR_PACKAGE_VERSION} tracks ${manifest.files.length} installed files.`
455
+ : `${manifestIssues.length} manifest identity, state, inventory, or mode issue(s) were found.`,
456
+ details: manifestIssues.length === 0
457
+ ? [`Installation ID: ${manifest.installation.id}`]
458
+ : manifestIssues,
459
+ };
460
+ const inspections = new Map(manifest.files.map((file) => [
461
+ file.path,
462
+ inspectRegularFile(targetDirectory, file.path),
463
+ ]));
464
+ return [
465
+ manifestCheck,
466
+ managedResourceCheck(manifest, inspections),
467
+ managedPermissionCheck(manifest, inspections),
468
+ installationBackupCheck(targetDirectory, manifest),
469
+ managedConfigurationCheck(targetDirectory, manifest, inspections),
470
+ ];
471
+ }
472
+ //# sourceMappingURL=installation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../src/doctor/installation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EACL,4BAA4B,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EACL,mCAAmC,EACnC,wBAAwB,EACxB,2BAA2B,GAI5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAkB9C,MAAM,uBAAuB,GAAG;IAC9B,qCAAqC;IACrC,uCAAuC;IACvC,wCAAwC;IACxC,kCAAkC;IAClC,kCAAkC;IAClC,8BAA8B;IAC9B,qCAAqC;IACrC,mDAAmD;IACnD,0DAA0D;IAC1D,sDAAsD;CAC9C,CAAC;AAEX,MAAM,uBAAuB,GAAG;IAC9B,kCAAkC;IAClC,4CAA4C;IAC5C,yCAAyC;IACzC,uCAAuC;IACvC,oCAAoC;IACpC,kCAAkC;IAClC,kCAAkC;IAClC,8CAA8C;IAC9C,2BAA2B;IAC3B,wCAAwC;IACxC,iCAAiC;IACjC,+CAA+C;IAC/C,oCAAoC;IACpC,kCAAkC;IAClC,kCAAkC;IAClC,yCAAyC;IACzC,qCAAqC;IACrC,kCAAkC;IAClC,mCAAmC;IACnC,kCAAkC;IAClC,8CAA8C;IAC9C,8BAA8B;IAC9B,qCAAqC;IACrC,uCAAuC;IACvC,wCAAwC;IACxC,yCAAyC;IACzC,0CAA0C;IAC1C,mCAAmC;CAC3B,CAAC;AAEX,MAAM,oBAAoB,GAAG;IAC3B,+BAA+B;IAC/B,sCAAsC;IACtC,sBAAsB;CACd,CAAC;AAEX,MAAM,oBAAoB,GAAmC;IAC3D,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI;QACJ,MAAM,EAAE,aAAa,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAe;QACzB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI;QACJ,MAAM,EAAE,aAAa,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAe;QACzB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI;QACJ,MAAM,EAAE,aAAa,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAe;QACzB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH;QACE,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,sCAAsC;QAC9C,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,6CAA6C;QACnD,MAAM,EAAE,0CAA0C;QAClD,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,sCAAsC;QAC9C,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC;AAEF,MAAM,sBAAsB,GAAG,iCAAiC,CAAC;AAEjE,SAAS,mBAAmB,CAAC,KAAc;IACzC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,EAC3D,CAAC;QACD,OAAO;YACL,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACtD,GAAI,KAAK,CAAC,OAA6B;SACxC,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,MAAM,CAAC,OAAmB;IACjC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,kBAAkB,CACzB,eAAuB,EACvB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,eAAe,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3B,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,2BAA2B,OAAO,EAAE;iBAC7C,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,OAAO,EAAE,EAAE,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EACJ,mBAAmB,CAAC,KAAK,CAAC,KAAK,QAAQ;oBACrC,CAAC,CAAC,mBAAmB,OAAO,EAAE;oBAC9B,CAAC,CAAC,sBAAsB,OAAO,EAAE;aACtC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE;gBACJ,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC;gBACnC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK;aACzB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EACJ,mBAAmB,CAAC,KAAK,CAAC,KAAK,QAAQ;gBACrC,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,KAAK,YAAY,KAAK;oBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAA8B;IAC7D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,CAAC,OAAO,CAAC,IAAI,cAAc,yBAAyB,GAAG,CACnF,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,KAAK,4BAA4B,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CACT,sBAAsB,QAAQ,CAAC,OAAO,CAAC,OAAO,cAAc,4BAA4B,GAAG,CAC5F,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CACT,yBAAyB,QAAQ,CAAC,YAAY,CAAC,KAAK,uBAAuB,CAC5E,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,2BAA2B,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,CAAC,KAAK,CAAC,MAAM,oBAAoB,2BAA2B,GAAG,CAC3F,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC,CACzD,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,SAAS;QACX,CAAC;QACD,IACE,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YACjC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EACrC,CAAC;YACD,MAAM,CAAC,IAAI,CACT,GAAG,QAAQ,CAAC,IAAI,cAAc,QAAQ,CAAC,QAAQ,SAAS,QAAQ,CAAC,MAAM,GAAG,CAC3E,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,GAAG,QAAQ,CAAC,IAAI,mBAAmB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CACrG,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CACT,qBAAqB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,GAAG,CAC1D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrD,IACE,MAAM,CAAC,MAAM,KAAK,cAAc;oBAChC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAChD,CAAC;oBACD,MAAM,CAAC,IAAI,CACT,GAAG,QAAQ,CAAC,IAAI,kDAAkD,4BAA4B,YAAY,CAC3G,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,sBAAsB,CACjD,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACT,4DAA4D,aAAa,CAAC,MAAM,GAAG,CACpF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAA6B,CAAC;QAC5D,IACE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC;YACtE,MAAM,CAAC,QAAQ,KAAK,OAAO,EAC3B,CAAC;YACD,MAAM,CAAC,IAAI,CACT,oEAAoE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,gBAAgB,GACpB,IAAI,CAAC,MAAM,KAAK,sBAAsB;YACtC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,EAAU,EAAE,KAAa,EAAE,MAAc;IAC7D,OAAO;QACL,EAAE;QACF,KAAK;QACL,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,2CAA2C;QACpD,OAAO,EAAE,CAAC,MAAM,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,OAAO;QACL,YAAY,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;QAC9D,YAAY,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,CAAC;QAClE,YAAY,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,CAAC;QACpE,YAAY,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA8B,EAC9B,WAAgD;IAEhD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,MAAM,IAAI,8BAA8B,EAAE,CACxE,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,IACE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI;YAChD,YAAY,KAAK,IAAI,CAAC,MAAM,EAC5B,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,IAAI,sCAAsC,YAAY,IAAI,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC/C,OAAO,EACL,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,oCAAoC;YAClE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,oDAAoD;QAC5E,OAAO,EAAE,QAAQ;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAA8B,EAC9B,WAAgD;IAEhD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,MAAM,IAAI,8BAA8B,EAAE,CACxE,CAAC;QACJ,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,IAAI,UAAU,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC/C,OAAO,EACL,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,4BAA4B,uBAAuB,CAAC,MAAM,qCAAqC;YACjG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,yDAAyD;QACjF,OAAO,EAAE,QAAQ;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,eAAuB,EACvB,QAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,2BAA2B,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM;aAC9B,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,CACjE;aACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CACvC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAChC,CAAC,MAAM,CAAC;QACT,OAAO;YACL,EAAE,EAAE,sBAAsB;YAC1B,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAC/C,OAAO,EACL,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACnB,CAAC,CAAC,GAAG,WAAW,uDAAuD;gBACvE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,8CAA8C;YACtE,OAAO,EAAE,QAAQ;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,sBAAsB;YAC1B,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CACxB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzC;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,IAAa,EAAE,KAAc;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CACpB,IAAY,EACZ,WAAgD;IAEhD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,KAAK,UAAU,EAAE,MAAM,IAAI,8BAA8B,EAAE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,yBAAyB,CAChC,eAAuB,EACvB,QAA8B,EAC9B,WAAgD;IAEhD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,sBAAsB,CACjD,CAAC;IAEF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,uBAAuB,CACnC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAChD,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CACX,GAAG,cAAc,CAAC,IAAI,kDAAkD,CACzE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,2BAA2B,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAClD,GAAG,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE,CACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,aAAa,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAC1C,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC;QACpE,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,eAAe,EAAE;YAC7D,aAAa;SACd,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9D,QAAQ,CAAC,IAAI,CACX,kHAAkH,CACnH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,aAAa,CACX,6CAA6C,EAC7C,WAAW,CACZ,CACS,CAAC;QACb,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC5D,QAAQ,CAAC,IAAI,CACX,qGAAqG,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC/C,OAAO,EACL,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,sEAAsE;YACxE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,6CAA6C;QACrE,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,eAAuB;IAEvB,IAAI,QAA8B,CAAC;IACnC,IAAI,CAAC;QACH,QAAQ,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO;YACL;gBACE,EAAE,EAAE,uBAAuB;gBAC3B,KAAK,EAAE,uBAAuB;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,oDAAoD;gBAC7D,OAAO;aACR;YACD,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,kBAAkB,CAC3C,eAAe,EACf,mCAAmC,CACpC,CAAC;IACF,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,CACjB,GAAG,mCAAmC,KAAK,kBAAkB,CAAC,MAAM,EAAE,CACvE,CAAC;IACJ,CAAC;SAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAClD,cAAc,CAAC,IAAI,CACjB,GAAG,mCAAmC,UAAU,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAC3G,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAgB;QACjC,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACrD,OAAO,EACL,cAAc,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,CAAC,GAAG,yBAAyB,IAAI,4BAA4B,WAAW,QAAQ,CAAC,KAAK,CAAC,MAAM,mBAAmB;YACjH,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,oEAAoE;QAClG,OAAO,EACL,cAAc,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,CAAC,CAAC,oBAAoB,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YAClD,CAAC,CAAC,cAAc;KACrB,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI;QACT,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;KACtC,CAAC,CACZ,CAAC;IAEF,OAAO;QACL,aAAa;QACb,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC3C,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC7C,uBAAuB,CAAC,eAAe,EAAE,QAAQ,CAAC;QAClD,yBAAyB,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC;KAClE,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,14 @@
1
- export { AndroidOrchestratorPlugin, default } from "./plugin/index.js";
2
- export { CERTIFIED_OPENCODE_VERSIONS, MAXIMUM_OPENCODE_VERSION, MINIMUM_OPENCODE_VERSION, } from "./compatibility/versions.js";
1
+ export { AndroidOrchestratorPlugin, ORCHESTRATOR_DIRECTORY_ENV, ORCHESTRATOR_WORKTREE_ENV, createCompatiblePlugin, default, } from "./plugin/index.js";
2
+ export { COMMON_HOOK_NAMES, COMMON_PLUGIN_INPUT_KEYS, defineCompatibleHooks, toCompatiblePluginInput, type CommonHookName, type CommonPluginInputKey, type CompatibleHooks, type CompatiblePlugin, type CompatiblePluginInput, } from "./compatibility/hooks.js";
3
+ export { ORCHESTRATOR_DOCTOR_TOOL_NAME, ORCHESTRATOR_STATUS_TOOL_NAME, READ_ONLY_TOOL_NAMES, ReadOnlyToolError, createReadOnlyTools, type DoctorRunner, type InstallationCheckRunner, type ReadOnlyToolErrorCode, type ReadOnlyToolName, type ReadOnlyTools, type ReadOnlyToolsOptions, type StatusRunner, type StatusRunnerInput, type StatusRunnerResult, } from "./tools/index.js";
4
+ export { CERTIFIED_OPENCODE_VERSIONS, MAXIMUM_OPENCODE_VERSION, MINIMUM_OPENCODE_VERSION, checkOpenCodeVersion, compareSemanticVersions, parseOpenCodeVersion, type OpenCodeVersionCheck, type OpenCodeVersionSupport, type ParsedSemanticVersion, } from "./compatibility/versions.js";
5
+ export { EXPECTED_MANAGED_FILE_COUNT, formatDoctorReport, inspectAndroidSdk, inspectOpenCode, inspectRequiredCommands, installationDoctorChecks, runCommand, runDoctor, type CommandResult, type CommandRunner, type DoctorCheck, type DoctorCheckStatus, type DoctorOptions, type DoctorReport, } from "./doctor/index.js";
6
+ export { AGENTS_MANAGED_BLOCK_BEGIN, AGENTS_MANAGED_BLOCK_END, AgentsConfigMergeError, mergeAgentsConfigText, planAgentsConfigMerge, type AgentsConfigMergeErrorCode, type AgentsConfigMergePlan, } from "./installer/agents-config.js";
7
+ export { AdaptiveProjectTemplateError, planAdaptiveProjectTemplates, type AdaptiveAndroidModuleConfiguration, type AdaptiveAndroidProjectConfiguration, type AdaptiveAutomationConfiguration, type AdaptiveProjectTemplateErrorCode, type AdaptiveProjectTemplateOptions, type AdaptiveProjectTemplatePlan, type AdaptiveTaskContractExample, } from "./installer/adaptive-templates.js";
8
+ export { detectAndroidProject, type AndroidModuleDetection, type AndroidModuleType, type AndroidProjectDetection, type GradleDsl, type GradleWrapperDetection, } from "./installer/android-project.js";
9
+ export { ProjectInitializationError, formatProjectInitializationResult, planProjectInitialization, planProjectResourceInputs, runInitProcess, runProjectInitialization, verifyInitializedProject, type InitProcessOptions, type InitProcessRunner, type InitVerificationCheck, type InitVerificationReport, type InitVerificationStatus, type ProjectInitializationErrorCode, type ProjectInitializationOptions, type ProjectInitializationPlan, type ProjectInitializationResult, type ProjectResourceInputPlan, } from "./installer/init.js";
10
+ export { INSTALLATION_BACKUPS_DIRECTORY, INSTALLATION_CONTROL_DIRECTORY, INSTALLATION_HISTORY_DIRECTORY, INSTALLATION_MANIFEST_RELATIVE_PATH, INSTALLATION_MANIFEST_SCHEMA_VERSION, InstallationManifestError, applyInstallationPlan, completeInstallationManifest, detectInstallationConflicts, planInstallationPreparation, prepareInstallationBackup, readInstallationManifest, rollbackPreparedInstallation, verifyInstallationIntegrity, type AppliedInstallation, type InstallationApplyOptions, type InstallationCompletionOptions, type InstallationConflictKind, type InstallationConflictReport, type InstallationFileConflict, type InstallationFileInput, type InstallationFileStrategy, type InstallationIntegrityCheck, type InstallationIntegrityReport, type InstallationIntegrityStatus, type InstallationManifest, type InstallationManifestErrorCode, type InstallationManifestFile, type InstallationManifestState, type InstallationPreparationOptions, type InstallationPreparationPlan, type InstallationRollbackOptions, type PlannedInstallationFile, type PreparedInstallation, type PreviousInstallationFile, } from "./installer/install-manifest.js";
11
+ export { UPGRADE_MARKER_RELATIVE_PATH, UPGRADE_RECOVERY_DIRECTORY, ProjectUpgradeError, applyProjectUpgrade, formatProjectUpgradeResult, planProjectUpgrade, runProjectUpgrade, type AppliedProjectUpgrade, type PlannedUpgradeFile, type PlannedUpgradeRemoval, type ProjectUpgradeErrorCode, type ProjectUpgradeOptions, type ProjectUpgradePlan, type ProjectUpgradeResult, type UpgradeFileSnapshot, } from "./installer/upgrade.js";
12
+ export { UNINSTALL_MARKER_RELATIVE_PATH, UNINSTALL_RECOVERY_DIRECTORY, ProjectUninstallError, applyProjectUninstall, formatProjectUninstallResult, planProjectUninstall, runProjectUninstall, type AppliedProjectUninstall, type PlannedUninstallFile, type ProjectUninstallErrorCode, type ProjectUninstallOptions, type ProjectUninstallPlan, type ProjectUninstallResult, type UninstallFileDisposition, type UninstallFileSnapshot, } from "./installer/uninstall.js";
13
+ export { ORCHESTRATOR_PACKAGE_NAME, ORCHESTRATOR_PACKAGE_VERSION, ORCHESTRATOR_PLUGIN_REFERENCE, REQUIRED_PLUGIN_REFERENCES, SUPERPOWERS_PLUGIN_REFERENCE, OpenCodeConfigMergeError, mergeOpenCodeConfigText, planOpenCodeConfigMerge, pluginPackageIdentity, type OpenCodeConfigMergeErrorCode, type OpenCodeConfigMergeOptions, type OpenCodeConfigMergePlan, type OpenCodeConfigMergeResult, } from "./installer/opencode-config.js";
3
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,14 @@
1
- export { AndroidOrchestratorPlugin, default } from "./plugin/index.js";
2
- export { CERTIFIED_OPENCODE_VERSIONS, MAXIMUM_OPENCODE_VERSION, MINIMUM_OPENCODE_VERSION, } from "./compatibility/versions.js";
1
+ export { AndroidOrchestratorPlugin, ORCHESTRATOR_DIRECTORY_ENV, ORCHESTRATOR_WORKTREE_ENV, createCompatiblePlugin, default, } from "./plugin/index.js";
2
+ export { COMMON_HOOK_NAMES, COMMON_PLUGIN_INPUT_KEYS, defineCompatibleHooks, toCompatiblePluginInput, } from "./compatibility/hooks.js";
3
+ export { ORCHESTRATOR_DOCTOR_TOOL_NAME, ORCHESTRATOR_STATUS_TOOL_NAME, READ_ONLY_TOOL_NAMES, ReadOnlyToolError, createReadOnlyTools, } from "./tools/index.js";
4
+ export { CERTIFIED_OPENCODE_VERSIONS, MAXIMUM_OPENCODE_VERSION, MINIMUM_OPENCODE_VERSION, checkOpenCodeVersion, compareSemanticVersions, parseOpenCodeVersion, } from "./compatibility/versions.js";
5
+ export { EXPECTED_MANAGED_FILE_COUNT, formatDoctorReport, inspectAndroidSdk, inspectOpenCode, inspectRequiredCommands, installationDoctorChecks, runCommand, runDoctor, } from "./doctor/index.js";
6
+ export { AGENTS_MANAGED_BLOCK_BEGIN, AGENTS_MANAGED_BLOCK_END, AgentsConfigMergeError, mergeAgentsConfigText, planAgentsConfigMerge, } from "./installer/agents-config.js";
7
+ export { AdaptiveProjectTemplateError, planAdaptiveProjectTemplates, } from "./installer/adaptive-templates.js";
8
+ export { detectAndroidProject, } from "./installer/android-project.js";
9
+ export { ProjectInitializationError, formatProjectInitializationResult, planProjectInitialization, planProjectResourceInputs, runInitProcess, runProjectInitialization, verifyInitializedProject, } from "./installer/init.js";
10
+ export { INSTALLATION_BACKUPS_DIRECTORY, INSTALLATION_CONTROL_DIRECTORY, INSTALLATION_HISTORY_DIRECTORY, INSTALLATION_MANIFEST_RELATIVE_PATH, INSTALLATION_MANIFEST_SCHEMA_VERSION, InstallationManifestError, applyInstallationPlan, completeInstallationManifest, detectInstallationConflicts, planInstallationPreparation, prepareInstallationBackup, readInstallationManifest, rollbackPreparedInstallation, verifyInstallationIntegrity, } from "./installer/install-manifest.js";
11
+ export { UPGRADE_MARKER_RELATIVE_PATH, UPGRADE_RECOVERY_DIRECTORY, ProjectUpgradeError, applyProjectUpgrade, formatProjectUpgradeResult, planProjectUpgrade, runProjectUpgrade, } from "./installer/upgrade.js";
12
+ export { UNINSTALL_MARKER_RELATIVE_PATH, UNINSTALL_RECOVERY_DIRECTORY, ProjectUninstallError, applyProjectUninstall, formatProjectUninstallResult, planProjectUninstall, runProjectUninstall, } from "./installer/uninstall.js";
13
+ export { ORCHESTRATOR_PACKAGE_NAME, ORCHESTRATOR_PACKAGE_VERSION, ORCHESTRATOR_PLUGIN_REFERENCE, REQUIRED_PLUGIN_REFERENCES, SUPERPOWERS_PLUGIN_REFERENCE, OpenCodeConfigMergeError, mergeOpenCodeConfigText, planOpenCodeConfigMerge, pluginPackageIdentity, } from "./installer/opencode-config.js";
3
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,GAMxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GAUpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GAIrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,UAAU,EACV,SAAS,GAOV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAQ7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,oBAAoB,GAMrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,wBAAwB,EACxB,wBAAwB,GAWzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,8BAA8B,EAC9B,mCAAmC,EACnC,oCAAoC,EACpC,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,GAsB5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,GASlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,mBAAmB,GASpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GAKtB,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { type AndroidModuleType, type AndroidProjectDetection, type GradleDsl } from "./android-project.js";
2
+ export type AdaptiveProjectTemplateErrorCode = "INVALID_ANDROID_PROJECT" | "NESTED_GRADLE_ROOT_UNSUPPORTED" | "PRIMARY_MODULE_AMBIGUOUS" | "PRIMARY_MODULE_NOT_FOUND" | "PROJECT_PATH_OUTSIDE_GIT_ROOT" | "TEMPLATE_INVALID";
3
+ export declare class AdaptiveProjectTemplateError extends Error {
4
+ readonly code: AdaptiveProjectTemplateErrorCode;
5
+ readonly details: readonly string[];
6
+ constructor(code: AdaptiveProjectTemplateErrorCode, message: string, details?: readonly string[]);
7
+ }
8
+ export interface AdaptiveProjectTemplateOptions {
9
+ /** Select a detected module by Gradle path, for example `:mobile`. */
10
+ primaryModule?: string;
11
+ }
12
+ export interface AdaptiveAndroidModuleConfiguration {
13
+ gradlePath: string;
14
+ directory: string;
15
+ buildFile: string;
16
+ dsl: "kotlin" | "groovy";
17
+ type: AndroidModuleType;
18
+ namespace: string | null;
19
+ applicationId: string | null;
20
+ }
21
+ export interface AdaptiveAndroidProjectConfiguration {
22
+ name: string;
23
+ gradleDsl: Exclude<GradleDsl, "unknown">;
24
+ settingsFile: string;
25
+ primaryModule: string;
26
+ modules: readonly AdaptiveAndroidModuleConfiguration[];
27
+ productionPaths: readonly string[];
28
+ testPaths: readonly string[];
29
+ }
30
+ export interface AdaptiveAutomationConfiguration {
31
+ readonly [key: string]: unknown;
32
+ schemaVersion: 3;
33
+ androidProject: AdaptiveAndroidProjectConfiguration;
34
+ plugins: Readonly<{
35
+ superpowers: string;
36
+ }>;
37
+ protectedPaths: readonly string[];
38
+ }
39
+ export interface AdaptiveTaskContractExample {
40
+ readonly [key: string]: unknown;
41
+ schemaVersion: 1;
42
+ allowedPaths: readonly string[];
43
+ forbiddenPaths: readonly string[];
44
+ targetTests: readonly string[];
45
+ }
46
+ export interface AdaptiveProjectTemplatePlan {
47
+ detection: AndroidProjectDetection;
48
+ projectRoot: string;
49
+ primaryModule: AdaptiveAndroidModuleConfiguration;
50
+ automationConfig: AdaptiveAutomationConfiguration;
51
+ automationConfigContent: string;
52
+ taskContractExample: AdaptiveTaskContractExample;
53
+ taskContractExampleContent: string;
54
+ }
55
+ export declare function planAdaptiveProjectTemplates(targetDirectory: string, options?: AdaptiveProjectTemplateOptions): AdaptiveProjectTemplatePlan;
56
+ //# sourceMappingURL=adaptive-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-templates.d.ts","sourceRoot":"","sources":["../../src/installer/adaptive-templates.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,gCAAgC,GACxC,yBAAyB,GACzB,gCAAgC,GAChC,0BAA0B,GAC1B,0BAA0B,GAC1B,+BAA+B,GAC/B,kBAAkB,CAAC;AAEvB,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;gBAGlC,IAAI,EAAE,gCAAgC,EACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,SAAS,MAAM,EAAO;CAOlC;AAED,MAAM,WAAW,8BAA8B;IAC7C,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACzB,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,kCAAkC,EAAE,CAAC;IACvD,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC;IACjB,cAAc,EAAE,mCAAmC,CAAC;IACpD,OAAO,EAAE,QAAQ,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,uBAAuB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kCAAkC,CAAC;IAClD,gBAAgB,EAAE,+BAA+B,CAAC;IAClD,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,2BAA2B,CAAC;IACjD,0BAA0B,EAAE,MAAM,CAAC;CACpC;AAqID,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,8BAAmC,GAC3C,2BAA2B,CA+G7B"}