@apexops/cli 0.10.0-next.3 → 0.10.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/assets/client-projection-metadata/copilot-cli-agent-tools.json +12 -0
- package/assets/client-projections/github-copilot-cli/.github/agents/apex-architect.agent.md +9 -8
- package/assets/client-projections/github-copilot-cli/.github/agents/apex-planner.agent.md +11 -8
- package/assets/client-projections/github-copilot-cli/.github/agents/apex-requirements.agent.md +23 -12
- package/assets/client-projections/github-copilot-cli/.github/agents/apex.agent.md +4 -0
- package/assets/client-projections/github-copilot-cli/.github/mcp.json +7 -0
- package/assets/client-projections/github-copilot-cli/.github/skills/apex-requirements/SKILL.md +7 -4
- package/assets/client-projections/github-copilot-vscode/.github/agents/apex-architect.agent.md +9 -8
- package/assets/client-projections/github-copilot-vscode/.github/agents/apex-planner.agent.md +11 -8
- package/assets/client-projections/github-copilot-vscode/.github/agents/apex-requirements.agent.md +23 -12
- package/assets/client-projections/github-copilot-vscode/.github/agents/apex-reviewer.agent.md +9 -5
- package/assets/client-projections/github-copilot-vscode/.github/agents/apex.agent.md +4 -0
- package/assets/client-projections/github-copilot-vscode/.github/skills/apex-requirements/SKILL.md +7 -4
- package/assets/config/runtime-bundle.v1.json +7 -7
- package/assets/customizations/.github/agents/apex-architect.agent.md +9 -8
- package/assets/customizations/.github/agents/apex-planner.agent.md +11 -8
- package/assets/customizations/.github/agents/apex-requirements.agent.md +23 -12
- package/assets/customizations/.github/agents/apex-reviewer.agent.md +9 -5
- package/assets/customizations/.github/agents/apex.agent.md +4 -0
- package/assets/customizations/.github/mcp.json +7 -0
- package/assets/customizations/.github/skills/apex-requirements/SKILL.md +7 -4
- package/assets/customizations/manifest.json +1 -1
- package/assets/manifest.json +58 -58
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +42 -2
- package/dist/mcp.js +89 -16
- package/dist/service.d.ts +46 -1
- package/dist/service.js +466 -41
- package/dist/state-transfer.js +23 -6
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
|
@@ -11,8 +11,9 @@ tools:
|
|
|
11
11
|
- apex/nextTask
|
|
12
12
|
- apex/recordInput
|
|
13
13
|
- apex/taskContext
|
|
14
|
-
- apex/
|
|
15
|
-
- apex/
|
|
14
|
+
- apex/requirementsComplete
|
|
15
|
+
- apex/reviewDecide
|
|
16
|
+
- apex/gateDecide
|
|
16
17
|
- azure-resource-manager-mcp/get_retail_prices
|
|
17
18
|
- azure-resource-manager-mcp/query_costs
|
|
18
19
|
- azure-resource-manager-mcp/query_aks_costs
|
|
@@ -41,12 +42,16 @@ candidate Azure services without deciding architecture, and produces a human-rev
|
|
|
41
42
|
|
|
42
43
|
# Success criteria
|
|
43
44
|
|
|
44
|
-
1. Call `apex/status`, then loop on `apex/nextTask`
|
|
45
|
+
1. Extract facts already supplied in the user's opening description. Call `apex/status`, then loop on `apex/nextTask`
|
|
46
|
+
until it returns `status=task`. Present matching supplied facts as recommended confirmations; do not make the user
|
|
47
|
+
retype them and do not record them before confirmation.
|
|
45
48
|
2. For every `status=needs_input`, do not call `apex/taskContext`. Use earlier recorded answers to frame the returned
|
|
46
49
|
questions, identify contradictions, and explain the consequence of material choices. Ask every returned question,
|
|
47
50
|
batching independent questions through the active client mechanism. Render `options` as native single-select or
|
|
48
|
-
multi-select controls without adding or reordering kernel options.
|
|
49
|
-
|
|
51
|
+
multi-select controls without adding or reordering kernel options. When a question includes `recommendation`, mark
|
|
52
|
+
its matching option or options as recommended and show the rationale; never record it until the user confirms or
|
|
53
|
+
overrides it. For `data-classification` and `compliance`, convert selections to their required typed value. Record
|
|
54
|
+
explicit deferrals and unknowns as their matching typed values.
|
|
50
55
|
3. Treat Azure services as candidates: recommend viable compute, data, integration, identity, and observability options
|
|
51
56
|
with a concise fit and trade-off rationale, but never record a service or SKU as an Architecture decision. Capture
|
|
52
57
|
user SKU constraints or an explicit no-preference position; Architecture owns final service and SKU selection.
|
|
@@ -58,13 +63,19 @@ candidate Azure services without deciding architecture, and produces a human-rev
|
|
|
58
63
|
required fields. Populate the typed review fields with business context, measurable success criteria, non-functional
|
|
59
64
|
requirements, security/compliance posture, budget/operations posture, regional constraints, and candidate-service
|
|
60
65
|
rationale for Architecture.
|
|
61
|
-
7.
|
|
62
|
-
`agent-output/<project>/<run>/`; report those paths and their artifact hash, but do not edit the
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
7. Submit the typed requirements artifact through `apex/requirementsComplete`. APEX materializes read-only review
|
|
67
|
+
projections at `agent-output/<project>/<run>/`; report those paths and their artifact hash, but do not edit the
|
|
68
|
+
generated files.
|
|
69
|
+
8. Immediately call `apex/nextTask` after submitting requirements. In VS Code, when it returns the
|
|
70
|
+
`requirements-review` task, invoke `APEX Reviewer` through the `agent` tool with exactly that task context; do not
|
|
71
|
+
wait for the user to request the challenge. In a client without the Reviewer worker, report the exact pending review
|
|
72
|
+
task and do not claim the challenge ran.
|
|
73
|
+
9. When `apex/nextTask` returns `needs_review`, present every finding in one native decision panel. Submit the complete
|
|
74
|
+
decision set through `apex/reviewDecide`. A revision must produce a new Requirements artifact and fresh review;
|
|
75
|
+
risk acceptance requires the rationale and future expiry requested by APEX.
|
|
76
|
+
10. When review completes, direct the user to review `01-requirements.md`, `README.md`, `service-recommendations.md`,
|
|
77
|
+
`sku-preferences.md`, and `challenger-findings.md`. Ask one explicit Proceed/Revise question. Only after the user
|
|
78
|
+
chooses Proceed, call `apex/gateDecide` for Gate 1 with `confirm: true`, then use the Architecture handoff.
|
|
68
79
|
|
|
69
80
|
Do not read repository files to discover artifact schemas; `apex/taskContext` is the complete output contract for this
|
|
70
81
|
MCP-only role. Read `.github/skills/apex-azure-defaults/SKILL.md` only when the kernel asks for a region, compliance,
|
|
@@ -6,7 +6,8 @@ model: ["GPT-5.6 Terra"]
|
|
|
6
6
|
user-invocable: false
|
|
7
7
|
tools:
|
|
8
8
|
- apex/taskContext
|
|
9
|
-
- apex/
|
|
9
|
+
- apex/readTaskInput
|
|
10
|
+
- apex/reviewComplete
|
|
10
11
|
- azure-resource-manager-mcp/get_retail_prices
|
|
11
12
|
- azure-resource-manager-mcp/query_costs
|
|
12
13
|
- azure-resource-manager-mcp/query_aks_costs
|
|
@@ -28,16 +29,19 @@ resolve, accept with rationale, or defer through the owning interactive stage.
|
|
|
28
29
|
|
|
29
30
|
# Success criteria
|
|
30
31
|
|
|
31
|
-
1. Call `apex/taskContext` once.
|
|
32
|
+
1. Call `apex/taskContext` once. If its content is externalized or incomplete, call `apex/readTaskInput` with the
|
|
33
|
+
supplied task ID, then continue from each returned `nextOffset` until the bounded review subject is complete.
|
|
32
34
|
2. Evaluate only supplied content, references, and review criteria. Test completeness, contradictions, traceability,
|
|
33
35
|
evidence freshness, security/governance, reliability/operations, cost/scale, and stage-specific acceptance criteria
|
|
34
36
|
when those lenses are present in the task.
|
|
35
|
-
3. Return one typed finding per issue with severity
|
|
36
|
-
Record no finding when the supplied evidence supports the
|
|
37
|
+
3. Return one typed finding per issue with `id`, `severity`, `title`, and `detail`. Put the challenged criterion,
|
|
38
|
+
evidence, impact, and concrete remediation in `detail`. Record no finding when the supplied evidence supports the
|
|
39
|
+
criterion; do not manufacture findings to satisfy a quota.
|
|
37
40
|
4. The kernel materializes a read-only summary at `agent-output/<project>/<run>/reviews/<subject>-findings.md`.
|
|
38
41
|
The owning interactive agent handles targeted follow-up and human dispositions; the Reviewer does not ask users or
|
|
39
42
|
apply fixes.
|
|
40
|
-
5. Return
|
|
43
|
+
5. Return findings through `apex/reviewComplete`; APEX derives subject identity, hash, timestamp, disposition, and
|
|
44
|
+
evidence binding.
|
|
41
45
|
|
|
42
46
|
# Constraints
|
|
43
47
|
|
|
@@ -13,6 +13,7 @@ tools:
|
|
|
13
13
|
- apex/projectList
|
|
14
14
|
- apex/projectUse
|
|
15
15
|
- apex/projectDelete
|
|
16
|
+
- apex/gateDecide
|
|
16
17
|
- azure-resource-manager-mcp/get_retail_prices
|
|
17
18
|
- azure-resource-manager-mcp/query_costs
|
|
18
19
|
- azure-resource-manager-mcp/query_aks_costs
|
|
@@ -81,6 +82,9 @@ Coordinate APEX without authoring project artifacts or inferring workflow state.
|
|
|
81
82
|
`apex gate decide --gate <N> --decision <approved|rejected> --actor <USER_ID> --json`. At Gate 4, also require
|
|
82
83
|
review of the exact preview, target, expiry, and approval recipient before directing
|
|
83
84
|
`apex gate decide --gate 4 --decision <approved|rejected> --actor <USER_ID> --recipient <RECIPIENT_ID> --json`.
|
|
85
|
+
9. When the user explicitly says `approve Gate 1`, `approve Gate 2`, `approve Gate 3`, or the equivalent rejection,
|
|
86
|
+
call `apex/gateDecide` with that gate, decision, and `confirm: true`. The operation derives the actor from the local
|
|
87
|
+
OS username. Do not use it for Gate 4, and do not infer confirmation from an ambiguous message.
|
|
84
88
|
|
|
85
89
|
Use the active client projection's question mechanism only for project creation or kernel-owned routing choices. Read
|
|
86
90
|
`.github/skills/apex-workflow/SKILL.md` only when status, resume, or project selection needs more guidance.
|
|
@@ -11,16 +11,23 @@
|
|
|
11
11
|
"capabilityStatus",
|
|
12
12
|
"nextTask",
|
|
13
13
|
"taskContext",
|
|
14
|
+
"readTaskInput",
|
|
14
15
|
"recordInput",
|
|
15
16
|
"projectCreate",
|
|
16
17
|
"projectList",
|
|
17
18
|
"projectUse",
|
|
18
19
|
"projectDelete",
|
|
20
|
+
"gateDecide",
|
|
21
|
+
"reviewDecide",
|
|
19
22
|
"stageArtifact",
|
|
20
23
|
"stageFile",
|
|
21
24
|
"generateIac",
|
|
22
25
|
"validateTask",
|
|
23
26
|
"completeTask",
|
|
27
|
+
"requirementsComplete",
|
|
28
|
+
"architectureComplete",
|
|
29
|
+
"reviewComplete",
|
|
30
|
+
"planComplete",
|
|
24
31
|
"preview",
|
|
25
32
|
"reconcile",
|
|
26
33
|
"inventory",
|
|
@@ -24,10 +24,13 @@ Use this skill only for an active requirements task.
|
|
|
24
24
|
4. Submit that request only through `apex/recordInput`, preserving its request ID, expected journal head, and owner
|
|
25
25
|
epoch.
|
|
26
26
|
5. Call `apex/nextTask` again and repeat until it returns a requirements `task`; only then read `apex/taskContext`.
|
|
27
|
-
6. Treat the
|
|
28
|
-
SKU preferences, and environment overrides without selecting
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
6. Treat service questions in the workload panel as a preference boundary. Present the kernel recommendation, then
|
|
28
|
+
capture retained, prohibited, and preferred services, SKU preferences, and environment overrides without selecting
|
|
29
|
+
architecture, SKUs, or implementation details.
|
|
30
|
+
7. Submit the task-context-defined output through `apex/requirementsComplete`, invoke the required Reviewer, and handle
|
|
31
|
+
`needs_review` through one native findings panel and `apex/reviewDecide`.
|
|
32
|
+
8. After a clean or fully dispositioned review, ask for explicit Gate 1 approval. Call `apex/gateDecide` only after the
|
|
33
|
+
user chooses Proceed, then continue to Architecture in the same turn.
|
|
31
34
|
|
|
32
35
|
The kernel catalog and its versioned input contracts are authoritative. Do not choose architecture, SKUs, or
|
|
33
36
|
implementation details while gathering requirements.
|
package/assets/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
3
|
"sources": {
|
|
4
|
-
"customizations": "0.10.0-next.
|
|
4
|
+
"customizations": "0.10.0-next.5",
|
|
5
5
|
"config": "1.0.0"
|
|
6
6
|
},
|
|
7
7
|
"composition": {
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"client-projections/github-copilot-cli/.github/skills/apex-terraform-test/references/test-design.md",
|
|
191
191
|
"client-projections/github-copilot-cli/.github/skills/apex-workflow/SKILL.md"
|
|
192
192
|
],
|
|
193
|
-
"digest": "
|
|
193
|
+
"digest": "87f5d74109a94f0014cb832441c4e02bb5b7c5ce97f7a43f80959e55b96052ec"
|
|
194
194
|
},
|
|
195
195
|
{
|
|
196
196
|
"id": "github-copilot-vscode",
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
"client-projections/github-copilot-vscode/.github/skills/apex-workflow/SKILL.md",
|
|
339
339
|
"client-projections/github-copilot-vscode/.vscode/mcp.json"
|
|
340
340
|
],
|
|
341
|
-
"digest": "
|
|
341
|
+
"digest": "a6387c778c2f2fddbda8453960f113ec4522bca784a7aeaa0a113fa18e9da7db"
|
|
342
342
|
}
|
|
343
343
|
],
|
|
344
344
|
"files": [
|
|
@@ -378,8 +378,8 @@
|
|
|
378
378
|
"path": "tools/registry/copilot-cli-agent-tools.json",
|
|
379
379
|
"mapping": "copilot-cli-tool-inventory"
|
|
380
380
|
},
|
|
381
|
-
"sha256": "
|
|
382
|
-
"bytes":
|
|
381
|
+
"sha256": "e67b7d9ca1c28956c13e8817c5f8ae2173d2070f4855ff71098690516e40d1fc",
|
|
382
|
+
"bytes": 3310
|
|
383
383
|
},
|
|
384
384
|
{
|
|
385
385
|
"path": "client-projections/github-copilot-cli/.github/agents/apex-architect.agent.md",
|
|
@@ -388,13 +388,13 @@
|
|
|
388
388
|
"composition": "client-projections",
|
|
389
389
|
"roleId": "architecture",
|
|
390
390
|
"sourcePath": ".github/agents/apex-architect.agent.md",
|
|
391
|
-
"sourceHash": "
|
|
391
|
+
"sourceHash": "47e6edf792c88ea633cd3bc66c59fba00a3c13020f8771d3635d5e2cc3414e70",
|
|
392
392
|
"clientId": "github-copilot-cli",
|
|
393
393
|
"target": ".github/agents/apex-architect.agent.md",
|
|
394
394
|
"adapterVersion": "1.1.0"
|
|
395
395
|
},
|
|
396
|
-
"sha256": "
|
|
397
|
-
"bytes":
|
|
396
|
+
"sha256": "9c194b0877b6dabcb5a5775c1e719bf851ea194206a183a582200f645b74dfc8",
|
|
397
|
+
"bytes": 5362
|
|
398
398
|
},
|
|
399
399
|
{
|
|
400
400
|
"path": "client-projections/github-copilot-cli/.github/agents/apex-operator.agent.md",
|
|
@@ -418,13 +418,13 @@
|
|
|
418
418
|
"composition": "client-projections",
|
|
419
419
|
"roleId": "planning",
|
|
420
420
|
"sourcePath": ".github/agents/apex-planner.agent.md",
|
|
421
|
-
"sourceHash": "
|
|
421
|
+
"sourceHash": "b33471f0ef586ace4847b9eecfd5363c1d8b269dd9eba460022498ff488c509c",
|
|
422
422
|
"clientId": "github-copilot-cli",
|
|
423
423
|
"target": ".github/agents/apex-planner.agent.md",
|
|
424
424
|
"adapterVersion": "1.1.0"
|
|
425
425
|
},
|
|
426
|
-
"sha256": "
|
|
427
|
-
"bytes":
|
|
426
|
+
"sha256": "e1e7a3790dc13628214ba19d5b28d1ab8a522fff07868e5c962a3ad985b690f5",
|
|
427
|
+
"bytes": 4868
|
|
428
428
|
},
|
|
429
429
|
{
|
|
430
430
|
"path": "client-projections/github-copilot-cli/.github/agents/apex-requirements.agent.md",
|
|
@@ -433,13 +433,13 @@
|
|
|
433
433
|
"composition": "client-projections",
|
|
434
434
|
"roleId": "requirements",
|
|
435
435
|
"sourcePath": ".github/agents/apex-requirements.agent.md",
|
|
436
|
-
"sourceHash": "
|
|
436
|
+
"sourceHash": "4bb98532f4c277424689eab261779a33dd0790faf6764a8487848afb5ffb9225",
|
|
437
437
|
"clientId": "github-copilot-cli",
|
|
438
438
|
"target": ".github/agents/apex-requirements.agent.md",
|
|
439
439
|
"adapterVersion": "1.1.0"
|
|
440
440
|
},
|
|
441
|
-
"sha256": "
|
|
442
|
-
"bytes":
|
|
441
|
+
"sha256": "6bd816e8b228ca0fd5b46e55949495286316b5cc406d11f0cefd9cd5bf0b3b0d",
|
|
442
|
+
"bytes": 6044
|
|
443
443
|
},
|
|
444
444
|
{
|
|
445
445
|
"path": "client-projections/github-copilot-cli/.github/agents/apex.agent.md",
|
|
@@ -448,13 +448,13 @@
|
|
|
448
448
|
"composition": "client-projections",
|
|
449
449
|
"roleId": "coordinator",
|
|
450
450
|
"sourcePath": ".github/agents/apex.agent.md",
|
|
451
|
-
"sourceHash": "
|
|
451
|
+
"sourceHash": "a7440e67b68177d9877a9d5b2201917d1bdf56fda9431ef106ffa1cb7a30298c",
|
|
452
452
|
"clientId": "github-copilot-cli",
|
|
453
453
|
"target": ".github/agents/apex.agent.md",
|
|
454
454
|
"adapterVersion": "1.1.0"
|
|
455
455
|
},
|
|
456
|
-
"sha256": "
|
|
457
|
-
"bytes":
|
|
456
|
+
"sha256": "65da2837858c0251432818f2819f21877253152d5626fd4715c79ce47ff0fc4f",
|
|
457
|
+
"bytes": 5261
|
|
458
458
|
},
|
|
459
459
|
{
|
|
460
460
|
"path": "client-projections/github-copilot-cli/.github/copilot-instructions.md",
|
|
@@ -773,10 +773,10 @@
|
|
|
773
773
|
"target": ".github/mcp.json",
|
|
774
774
|
"adapterVersion": "1.1.0",
|
|
775
775
|
"sourcePath": ".github/mcp.json",
|
|
776
|
-
"sourceHash": "
|
|
776
|
+
"sourceHash": "21d86c077f0f304e59433f7b7f5063948f60b41ec961f71d50eccf94c340fea9"
|
|
777
777
|
},
|
|
778
|
-
"sha256": "
|
|
779
|
-
"bytes":
|
|
778
|
+
"sha256": "21d86c077f0f304e59433f7b7f5063948f60b41ec961f71d50eccf94c340fea9",
|
|
779
|
+
"bytes": 1535
|
|
780
780
|
},
|
|
781
781
|
{
|
|
782
782
|
"path": "client-projections/github-copilot-cli/.github/skills/apex-architecture/SKILL.md",
|
|
@@ -2089,10 +2089,10 @@
|
|
|
2089
2089
|
"target": ".github/skills/apex-requirements/SKILL.md",
|
|
2090
2090
|
"adapterVersion": "1.1.0",
|
|
2091
2091
|
"sourcePath": ".github/skills/apex-requirements/SKILL.md",
|
|
2092
|
-
"sourceHash": "
|
|
2092
|
+
"sourceHash": "0b5076218e79d165efaa2d4a00d5f6014804e6f04666d223947a4e8c9f9512f5"
|
|
2093
2093
|
},
|
|
2094
|
-
"sha256": "
|
|
2095
|
-
"bytes":
|
|
2094
|
+
"sha256": "0b5076218e79d165efaa2d4a00d5f6014804e6f04666d223947a4e8c9f9512f5",
|
|
2095
|
+
"bytes": 2418
|
|
2096
2096
|
},
|
|
2097
2097
|
{
|
|
2098
2098
|
"path": "client-projections/github-copilot-cli/.github/skills/apex-terraform-import/SKILL.md",
|
|
@@ -2339,13 +2339,13 @@
|
|
|
2339
2339
|
"composition": "client-projections",
|
|
2340
2340
|
"roleId": "architecture",
|
|
2341
2341
|
"sourcePath": ".github/agents/apex-architect.agent.md",
|
|
2342
|
-
"sourceHash": "
|
|
2342
|
+
"sourceHash": "47e6edf792c88ea633cd3bc66c59fba00a3c13020f8771d3635d5e2cc3414e70",
|
|
2343
2343
|
"clientId": "github-copilot-vscode",
|
|
2344
2344
|
"target": ".github/agents/apex-architect.agent.md",
|
|
2345
2345
|
"adapterVersion": "1.1.0"
|
|
2346
2346
|
},
|
|
2347
|
-
"sha256": "
|
|
2348
|
-
"bytes":
|
|
2347
|
+
"sha256": "f4e8363fd82309494f2d3a54371abd824e6862323c4db6f52c8b8fe657bf0745",
|
|
2348
|
+
"bytes": 5647
|
|
2349
2349
|
},
|
|
2350
2350
|
{
|
|
2351
2351
|
"path": "client-projections/github-copilot-vscode/.github/agents/apex-codegen.agent.md",
|
|
@@ -2384,13 +2384,13 @@
|
|
|
2384
2384
|
"composition": "client-projections",
|
|
2385
2385
|
"roleId": "planning",
|
|
2386
2386
|
"sourcePath": ".github/agents/apex-planner.agent.md",
|
|
2387
|
-
"sourceHash": "
|
|
2387
|
+
"sourceHash": "b33471f0ef586ace4847b9eecfd5363c1d8b269dd9eba460022498ff488c509c",
|
|
2388
2388
|
"clientId": "github-copilot-vscode",
|
|
2389
2389
|
"target": ".github/agents/apex-planner.agent.md",
|
|
2390
2390
|
"adapterVersion": "1.1.0"
|
|
2391
2391
|
},
|
|
2392
|
-
"sha256": "
|
|
2393
|
-
"bytes":
|
|
2392
|
+
"sha256": "1133d3020cdf6b5a787df091730e9efa7de9076290dd760fe58864478d7fbec4",
|
|
2393
|
+
"bytes": 5176
|
|
2394
2394
|
},
|
|
2395
2395
|
{
|
|
2396
2396
|
"path": "client-projections/github-copilot-vscode/.github/agents/apex-requirements.agent.md",
|
|
@@ -2399,13 +2399,13 @@
|
|
|
2399
2399
|
"composition": "client-projections",
|
|
2400
2400
|
"roleId": "requirements",
|
|
2401
2401
|
"sourcePath": ".github/agents/apex-requirements.agent.md",
|
|
2402
|
-
"sourceHash": "
|
|
2402
|
+
"sourceHash": "4bb98532f4c277424689eab261779a33dd0790faf6764a8487848afb5ffb9225",
|
|
2403
2403
|
"clientId": "github-copilot-vscode",
|
|
2404
2404
|
"target": ".github/agents/apex-requirements.agent.md",
|
|
2405
2405
|
"adapterVersion": "1.1.0"
|
|
2406
2406
|
},
|
|
2407
|
-
"sha256": "
|
|
2408
|
-
"bytes":
|
|
2407
|
+
"sha256": "70e254ca0b7a8cef6f44fc93c5558d6983c6d0bee71b616dc467f5010a687165",
|
|
2408
|
+
"bytes": 6348
|
|
2409
2409
|
},
|
|
2410
2410
|
{
|
|
2411
2411
|
"path": "client-projections/github-copilot-vscode/.github/agents/apex-reviewer.agent.md",
|
|
@@ -2414,13 +2414,13 @@
|
|
|
2414
2414
|
"composition": "client-projections",
|
|
2415
2415
|
"roleId": "review",
|
|
2416
2416
|
"sourcePath": ".github/agents/apex-reviewer.agent.md",
|
|
2417
|
-
"sourceHash": "
|
|
2417
|
+
"sourceHash": "aa2c8064d102f8e2e69eaccc15894455abfcc56892e61bde46d6ece0cbc3c7cd",
|
|
2418
2418
|
"clientId": "github-copilot-vscode",
|
|
2419
2419
|
"target": ".github/agents/apex-reviewer.agent.md",
|
|
2420
2420
|
"adapterVersion": "1.1.0"
|
|
2421
2421
|
},
|
|
2422
|
-
"sha256": "
|
|
2423
|
-
"bytes":
|
|
2422
|
+
"sha256": "4be66c1a357ea492c20eaada3431c9b7184f33618bfd69f2725c0c83a2f3f8e7",
|
|
2423
|
+
"bytes": 2976
|
|
2424
2424
|
},
|
|
2425
2425
|
{
|
|
2426
2426
|
"path": "client-projections/github-copilot-vscode/.github/agents/apex-validator.agent.md",
|
|
@@ -2444,13 +2444,13 @@
|
|
|
2444
2444
|
"composition": "client-projections",
|
|
2445
2445
|
"roleId": "coordinator",
|
|
2446
2446
|
"sourcePath": ".github/agents/apex.agent.md",
|
|
2447
|
-
"sourceHash": "
|
|
2447
|
+
"sourceHash": "a7440e67b68177d9877a9d5b2201917d1bdf56fda9431ef106ffa1cb7a30298c",
|
|
2448
2448
|
"clientId": "github-copilot-vscode",
|
|
2449
2449
|
"target": ".github/agents/apex.agent.md",
|
|
2450
2450
|
"adapterVersion": "1.1.0"
|
|
2451
2451
|
},
|
|
2452
|
-
"sha256": "
|
|
2453
|
-
"bytes":
|
|
2452
|
+
"sha256": "1ebb9da1303aff993228efdc1bb29dde70c6ce9c3cb1b61306659ae2a7ecc6f2",
|
|
2453
|
+
"bytes": 6079
|
|
2454
2454
|
},
|
|
2455
2455
|
{
|
|
2456
2456
|
"path": "client-projections/github-copilot-vscode/.github/copilot-instructions.md",
|
|
@@ -4071,10 +4071,10 @@
|
|
|
4071
4071
|
"target": ".github/skills/apex-requirements/SKILL.md",
|
|
4072
4072
|
"adapterVersion": "1.1.0",
|
|
4073
4073
|
"sourcePath": ".github/skills/apex-requirements/SKILL.md",
|
|
4074
|
-
"sourceHash": "
|
|
4074
|
+
"sourceHash": "0b5076218e79d165efaa2d4a00d5f6014804e6f04666d223947a4e8c9f9512f5"
|
|
4075
4075
|
},
|
|
4076
|
-
"sha256": "
|
|
4077
|
-
"bytes":
|
|
4076
|
+
"sha256": "0b5076218e79d165efaa2d4a00d5f6014804e6f04666d223947a4e8c9f9512f5",
|
|
4077
|
+
"bytes": 2418
|
|
4078
4078
|
},
|
|
4079
4079
|
{
|
|
4080
4080
|
"path": "client-projections/github-copilot-vscode/.github/skills/apex-terraform-import/SKILL.md",
|
|
@@ -4385,7 +4385,7 @@
|
|
|
4385
4385
|
"path": "config/runtime-bundle.v1.json",
|
|
4386
4386
|
"mapping": "config"
|
|
4387
4387
|
},
|
|
4388
|
-
"sha256": "
|
|
4388
|
+
"sha256": "7f90c32650d60c10143c298896b404b204427c77a5a746a8778a9bdf1229fd30",
|
|
4389
4389
|
"bytes": 2039
|
|
4390
4390
|
},
|
|
4391
4391
|
{
|
|
@@ -4415,8 +4415,8 @@
|
|
|
4415
4415
|
"path": "customizations/.github/agents/apex-architect.agent.md",
|
|
4416
4416
|
"mapping": "customizations"
|
|
4417
4417
|
},
|
|
4418
|
-
"sha256": "
|
|
4419
|
-
"bytes":
|
|
4418
|
+
"sha256": "47e6edf792c88ea633cd3bc66c59fba00a3c13020f8771d3635d5e2cc3414e70",
|
|
4419
|
+
"bytes": 5463
|
|
4420
4420
|
},
|
|
4421
4421
|
{
|
|
4422
4422
|
"path": "customizations/.github/agents/apex-codegen.agent.md",
|
|
@@ -4445,8 +4445,8 @@
|
|
|
4445
4445
|
"path": "customizations/.github/agents/apex-planner.agent.md",
|
|
4446
4446
|
"mapping": "customizations"
|
|
4447
4447
|
},
|
|
4448
|
-
"sha256": "
|
|
4449
|
-
"bytes":
|
|
4448
|
+
"sha256": "b33471f0ef586ace4847b9eecfd5363c1d8b269dd9eba460022498ff488c509c",
|
|
4449
|
+
"bytes": 4992
|
|
4450
4450
|
},
|
|
4451
4451
|
{
|
|
4452
4452
|
"path": "customizations/.github/agents/apex-requirements.agent.md",
|
|
@@ -4455,8 +4455,8 @@
|
|
|
4455
4455
|
"path": "customizations/.github/agents/apex-requirements.agent.md",
|
|
4456
4456
|
"mapping": "customizations"
|
|
4457
4457
|
},
|
|
4458
|
-
"sha256": "
|
|
4459
|
-
"bytes":
|
|
4458
|
+
"sha256": "4bb98532f4c277424689eab261779a33dd0790faf6764a8487848afb5ffb9225",
|
|
4459
|
+
"bytes": 6164
|
|
4460
4460
|
},
|
|
4461
4461
|
{
|
|
4462
4462
|
"path": "customizations/.github/agents/apex-reviewer.agent.md",
|
|
@@ -4465,8 +4465,8 @@
|
|
|
4465
4465
|
"path": "customizations/.github/agents/apex-reviewer.agent.md",
|
|
4466
4466
|
"mapping": "customizations"
|
|
4467
4467
|
},
|
|
4468
|
-
"sha256": "
|
|
4469
|
-
"bytes":
|
|
4468
|
+
"sha256": "aa2c8064d102f8e2e69eaccc15894455abfcc56892e61bde46d6ece0cbc3c7cd",
|
|
4469
|
+
"bytes": 2935
|
|
4470
4470
|
},
|
|
4471
4471
|
{
|
|
4472
4472
|
"path": "customizations/.github/agents/apex-validator.agent.md",
|
|
@@ -4485,8 +4485,8 @@
|
|
|
4485
4485
|
"path": "customizations/.github/agents/apex.agent.md",
|
|
4486
4486
|
"mapping": "customizations"
|
|
4487
4487
|
},
|
|
4488
|
-
"sha256": "
|
|
4489
|
-
"bytes":
|
|
4488
|
+
"sha256": "a7440e67b68177d9877a9d5b2201917d1bdf56fda9431ef106ffa1cb7a30298c",
|
|
4489
|
+
"bytes": 5895
|
|
4490
4490
|
},
|
|
4491
4491
|
{
|
|
4492
4492
|
"path": "customizations/.github/copilot-instructions.md",
|
|
@@ -4715,8 +4715,8 @@
|
|
|
4715
4715
|
"path": "customizations/.github/mcp.json",
|
|
4716
4716
|
"mapping": "customizations"
|
|
4717
4717
|
},
|
|
4718
|
-
"sha256": "
|
|
4719
|
-
"bytes":
|
|
4718
|
+
"sha256": "21d86c077f0f304e59433f7b7f5063948f60b41ec961f71d50eccf94c340fea9",
|
|
4719
|
+
"bytes": 1535
|
|
4720
4720
|
},
|
|
4721
4721
|
{
|
|
4722
4722
|
"path": "customizations/.github/skills/apex-architecture/SKILL.md",
|
|
@@ -5655,8 +5655,8 @@
|
|
|
5655
5655
|
"path": "customizations/.github/skills/apex-requirements/SKILL.md",
|
|
5656
5656
|
"mapping": "customizations"
|
|
5657
5657
|
},
|
|
5658
|
-
"sha256": "
|
|
5659
|
-
"bytes":
|
|
5658
|
+
"sha256": "0b5076218e79d165efaa2d4a00d5f6014804e6f04666d223947a4e8c9f9512f5",
|
|
5659
|
+
"bytes": 2418
|
|
5660
5660
|
},
|
|
5661
5661
|
{
|
|
5662
5662
|
"path": "customizations/.github/skills/apex-terraform-import/SKILL.md",
|
|
@@ -5855,13 +5855,13 @@
|
|
|
5855
5855
|
"path": "customizations/manifest.json",
|
|
5856
5856
|
"mapping": "customizations"
|
|
5857
5857
|
},
|
|
5858
|
-
"sha256": "
|
|
5858
|
+
"sha256": "c6f64975501baddd9d1712a7a5169b70ab61a4328fdcba9444c0b20800d05ade",
|
|
5859
5859
|
"bytes": 14078
|
|
5860
5860
|
}
|
|
5861
5861
|
],
|
|
5862
5862
|
"lock": {
|
|
5863
5863
|
"algorithm": "sha256",
|
|
5864
5864
|
"canonicalization": "apex-bundled-assets-v1",
|
|
5865
|
-
"digest": "
|
|
5865
|
+
"digest": "455ee4805ee6e1635feea04cd73745cd358679a791360ba7f6ae24180785a05d"
|
|
5866
5866
|
}
|
|
5867
5867
|
}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type ServiceOptions } from "./service.js";
|
|
3
3
|
export declare function execute(argv: string[], root?: string, options?: ServiceOptions): Promise<unknown>;
|
|
4
|
+
export declare function formatHumanResult(args: string[], result: unknown): string;
|
|
4
5
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.js
CHANGED
|
@@ -624,12 +624,14 @@ export async function execute(argv, root = process.cwd(), options = {}) {
|
|
|
624
624
|
}
|
|
625
625
|
async function main() {
|
|
626
626
|
const json = process.argv.includes("--json");
|
|
627
|
+
const verbose = process.argv.includes("--verbose");
|
|
628
|
+
const args = process.argv.slice(2);
|
|
627
629
|
try {
|
|
628
|
-
const result = await execute(
|
|
630
|
+
const result = await execute(args);
|
|
629
631
|
if (result !== undefined)
|
|
630
632
|
process.stdout.write(json
|
|
631
633
|
? `${JSON.stringify({ ok: true, result })}\n`
|
|
632
|
-
: `${typeof result === "string" ? result : JSON.stringify(result, null, 2)}\n`);
|
|
634
|
+
: `${verbose ? (typeof result === "string" ? result : JSON.stringify(result, null, 2)) : formatHumanResult(args, result)}\n`);
|
|
633
635
|
}
|
|
634
636
|
catch (error) {
|
|
635
637
|
const normalized = normalizeError(error);
|
|
@@ -641,6 +643,44 @@ async function main() {
|
|
|
641
643
|
process.exitCode = normalized.exitCode;
|
|
642
644
|
}
|
|
643
645
|
}
|
|
646
|
+
export function formatHumanResult(args, result) {
|
|
647
|
+
const command = args.find((argument) => !argument.startsWith("--"));
|
|
648
|
+
if (command === "status" && result !== null && typeof result === "object") {
|
|
649
|
+
const status = result;
|
|
650
|
+
const task = status.task ?? null;
|
|
651
|
+
const stage = task?.startsWith("requirements")
|
|
652
|
+
? "Requirements"
|
|
653
|
+
: task?.startsWith("architecture") || task?.startsWith("governance")
|
|
654
|
+
? "Architecture"
|
|
655
|
+
: task?.startsWith("plan")
|
|
656
|
+
? "Planning"
|
|
657
|
+
: task?.startsWith("codegen") || task?.startsWith("validation")
|
|
658
|
+
? "Build and validate"
|
|
659
|
+
: task?.startsWith("preview") || task?.startsWith("deploy") || task === "inventory"
|
|
660
|
+
? "Operations"
|
|
661
|
+
: "Ready for next decision";
|
|
662
|
+
const blocker = status.blockers?.[0] ?? "None";
|
|
663
|
+
const next = task !== null ? `Continue ${stage}` : blocker !== "None" ? blocker : "Ask APEX to continue";
|
|
664
|
+
return [
|
|
665
|
+
`Project: ${status.run?.projectId ?? "unknown"} (${status.run?.environment ?? "unknown"})`,
|
|
666
|
+
`Stage: ${stage}`,
|
|
667
|
+
`Blocker: ${blocker}`,
|
|
668
|
+
`Next: ${next}`,
|
|
669
|
+
].join("\n");
|
|
670
|
+
}
|
|
671
|
+
if (command === "doctor" && result !== null && typeof result === "object") {
|
|
672
|
+
const doctor = result;
|
|
673
|
+
const passed = doctor.checks?.filter(({ ok }) => ok).length ?? 0;
|
|
674
|
+
const total = doctor.checks?.length ?? 0;
|
|
675
|
+
const remaining = doctor.remedies?.length ?? 0;
|
|
676
|
+
return [
|
|
677
|
+
`Status: ${doctor.healthy ? "Ready" : "Setup incomplete"} (${passed}/${total} checks ready)`,
|
|
678
|
+
`Next: ${doctor.nextAction ?? "No action required"}`,
|
|
679
|
+
...(remaining > 1 ? [`Later: ${remaining - 1} additional setup item${remaining === 2 ? "" : "s"}`] : []),
|
|
680
|
+
].join("\n");
|
|
681
|
+
}
|
|
682
|
+
return typeof result === "string" ? result : JSON.stringify(result, null, 2);
|
|
683
|
+
}
|
|
644
684
|
if (process.argv[1] !== undefined && (await realpath(process.argv[1])) === (await realpath(new URL(import.meta.url))))
|
|
645
685
|
await main();
|
|
646
686
|
//# sourceMappingURL=cli.js.map
|