@momentiq/dark-factory-cli 1.0.0 → 2.0.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.
- package/README.md +121 -40
- package/dist/adapters/codex-sdk.d.ts +66 -0
- package/dist/adapters/codex-sdk.d.ts.map +1 -1
- package/dist/adapters/codex-sdk.js +321 -4
- package/dist/adapters/codex-sdk.js.map +1 -1
- package/dist/adapters/critic-result-schema.d.ts +15 -10
- package/dist/adapters/critic-result-schema.d.ts.map +1 -1
- package/dist/adapters/critic-result-schema.js +10 -0
- package/dist/adapters/critic-result-schema.js.map +1 -1
- package/dist/adapters/cursor-cli.d.ts +19 -1
- package/dist/adapters/cursor-cli.d.ts.map +1 -1
- package/dist/adapters/cursor-cli.js +96 -14
- package/dist/adapters/cursor-cli.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +7 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/static-schema-lint.d.ts +68 -0
- package/dist/adapters/static-schema-lint.d.ts.map +1 -0
- package/dist/adapters/static-schema-lint.js +813 -0
- package/dist/adapters/static-schema-lint.js.map +1 -0
- package/dist/branch-protection/spec-default.yaml +2 -2
- package/dist/cli.d.ts +17 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +414 -113
- package/dist/cli.js.map +1 -1
- package/dist/commands/findings.d.ts +6 -0
- package/dist/commands/findings.d.ts.map +1 -0
- package/dist/commands/findings.js +196 -0
- package/dist/commands/findings.js.map +1 -0
- package/dist/commands/show.d.ts +11 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +78 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/skills.d.ts +6 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +248 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +85 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/compact/index.d.ts +2 -0
- package/dist/compact/index.d.ts.map +1 -0
- package/dist/compact/index.js +3 -0
- package/dist/compact/index.js.map +1 -0
- package/dist/compact/lockfile.d.ts +53 -0
- package/dist/compact/lockfile.d.ts.map +1 -0
- package/dist/compact/lockfile.js +626 -0
- package/dist/compact/lockfile.js.map +1 -0
- package/dist/cycle-doc-validator/validate_cycle_doc.py +39 -9
- package/dist/doctor.d.ts +51 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +497 -1
- package/dist/doctor.js.map +1 -1
- package/dist/evidence/docker-build.d.ts +6 -0
- package/dist/evidence/docker-build.d.ts.map +1 -0
- package/dist/evidence/docker-build.js +199 -0
- package/dist/evidence/docker-build.js.map +1 -0
- package/dist/evidence/index.d.ts +1 -0
- package/dist/evidence/index.d.ts.map +1 -1
- package/dist/evidence/index.js +6 -0
- package/dist/evidence/index.js.map +1 -1
- package/dist/handoff/handoff-verb.d.ts.map +1 -1
- package/dist/handoff/handoff-verb.js +6 -3
- package/dist/handoff/handoff-verb.js.map +1 -1
- package/dist/handoff/ports.d.ts +8 -0
- package/dist/handoff/ports.d.ts.map +1 -1
- package/dist/handoff/real-clients.js +1 -1
- package/dist/handoff/real-clients.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/show-status-core.d.ts +63 -0
- package/dist/lib/show-status-core.d.ts.map +1 -0
- package/dist/lib/show-status-core.js +156 -0
- package/dist/lib/show-status-core.js.map +1 -0
- package/dist/mcp/prompts.d.ts.map +1 -1
- package/dist/mcp/prompts.js +113 -78
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/resources.js +1 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/doctor.d.ts.map +1 -1
- package/dist/mcp/tools/doctor.js +5 -0
- package/dist/mcp/tools/doctor.js.map +1 -1
- package/dist/mcp/tools/findings.d.ts +0 -22
- package/dist/mcp/tools/findings.d.ts.map +1 -1
- package/dist/mcp/tools/findings.js +5 -73
- package/dist/mcp/tools/findings.js.map +1 -1
- package/dist/mcp/tools/handoff.d.ts.map +1 -1
- package/dist/mcp/tools/handoff.js +10 -17
- package/dist/mcp/tools/handoff.js.map +1 -1
- package/dist/mcp/tools/review-bypass.d.ts.map +1 -1
- package/dist/mcp/tools/review-bypass.js +22 -1
- package/dist/mcp/tools/review-bypass.js.map +1 -1
- package/dist/mcp/tools/skills-install.d.ts +6 -0
- package/dist/mcp/tools/skills-install.d.ts.map +1 -0
- package/dist/mcp/tools/skills-install.js +260 -0
- package/dist/mcp/tools/skills-install.js.map +1 -0
- package/dist/mcp/tools/stats-gate.d.ts.map +1 -1
- package/dist/mcp/tools/stats-gate.js +63 -15
- package/dist/mcp/tools/stats-gate.js.map +1 -1
- package/dist/policy/baseline.d.ts.map +1 -1
- package/dist/policy/baseline.js +11 -3
- package/dist/policy/baseline.js.map +1 -1
- package/dist/policy/gate.d.ts +1 -1
- package/dist/policy/gate.d.ts.map +1 -1
- package/dist/policy/gate.js +96 -12
- package/dist/policy/gate.js.map +1 -1
- package/dist/prompt.d.ts +1 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +123 -4
- package/dist/prompt.js.map +1 -1
- package/dist/report.d.ts +130 -3
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +367 -10
- package/dist/report.js.map +1 -1
- package/dist/runner.d.ts +6 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +213 -4
- package/dist/runner.js.map +1 -1
- package/dist/self-consistency.d.ts +144 -0
- package/dist/self-consistency.d.ts.map +1 -0
- package/dist/self-consistency.js +368 -0
- package/dist/self-consistency.js.map +1 -0
- package/dist/skills/config.d.ts +176 -0
- package/dist/skills/config.d.ts.map +1 -0
- package/dist/skills/config.js +251 -0
- package/dist/skills/config.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/install.d.ts +62 -0
- package/dist/skills/install.d.ts.map +1 -0
- package/dist/skills/install.js +315 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/template.d.ts +42 -0
- package/dist/skills/template.d.ts.map +1 -0
- package/dist/skills/template.js +95 -0
- package/dist/skills/template.js.map +1 -0
- package/dist/trusted-surface/rebind.d.ts.map +1 -1
- package/dist/trusted-surface/rebind.js +199 -2
- package/dist/trusted-surface/rebind.js.map +1 -1
- package/package.json +36 -2
- package/skills/README.md +89 -0
- package/skills/chief-engineer-blitz/SKILL.md.tmpl +443 -0
- package/skills/chief-engineer-blitz/skill.json +53 -0
- package/skills/chief-engineer-review/SKILL.md.tmpl +184 -0
- package/skills/chief-engineer-review/references/review-examples.md.tmpl +130 -0
- package/skills/chief-engineer-review/skill.json +67 -0
- package/skills/chief-engineer-review/templates/code-review-prompt.md.tmpl +111 -0
- package/skills/chief-engineer-review/templates/escalation-prompt.md.tmpl +56 -0
- package/skills/chief-engineer-review/templates/plan-review-prompt.md.tmpl +74 -0
- package/skills/skill-schema.json +73 -0
|
@@ -41,9 +41,14 @@ aligned with CONTRIBUTING.md "Trailers" section):
|
|
|
41
41
|
1. **Type detection.** Plan PR if title starts with ``docs(roadmap):``
|
|
42
42
|
or ``docs(<cycle>):``, OR PR has label ``plan-pr``, AND every
|
|
43
43
|
changed path is under ``docs/`` (or is the repo-root ``AGENTS.md``
|
|
44
|
-
/ ``CLAUDE.md``)
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
/ ``CLAUDE.md``), AND at least one changed file is itself a cycle
|
|
45
|
+
doc matching ``docs/roadmap/cycles/cycle*.md``. The "docs only"
|
|
46
|
+
check is broader than just cycle-doc paths so a plan PR can include
|
|
47
|
+
supporting ADR / engineering docs in the same change without being
|
|
48
|
+
misclassified as a code PR. The "at least one cycle doc" check
|
|
49
|
+
(issue #25) prevents routine roadmap-index refreshes
|
|
50
|
+
(``docs/roadmap/roadmap-overview.md``, ``docs/roadmap/dark-factory-
|
|
51
|
+
roadmap.md``) from being forced through the full plan-PR contract.
|
|
47
52
|
Otherwise code PR.
|
|
48
53
|
|
|
49
54
|
2. **Bot/automation exemption.** PRs with any of the labels
|
|
@@ -651,6 +656,21 @@ def _parse_paginated_commit_messages(raw: str) -> str:
|
|
|
651
656
|
return "\n\n".join(_parse_paginated_commits_to_list(raw))
|
|
652
657
|
|
|
653
658
|
|
|
659
|
+
def _is_cycle_doc_path(path: str) -> bool:
|
|
660
|
+
"""Match ``docs/roadmap/cycles/cycle<id>(-<slug>)?.md``.
|
|
661
|
+
|
|
662
|
+
The classifier counts only files whose basename starts with
|
|
663
|
+
``cycle`` followed by an id character. Sibling files like
|
|
664
|
+
``docs/roadmap/cycles/README.md`` are index/meta content and do
|
|
665
|
+
NOT trigger the plan-PR contract.
|
|
666
|
+
"""
|
|
667
|
+
prefix = "docs/roadmap/cycles/cycle"
|
|
668
|
+
if not path.startswith(prefix) or not path.endswith(".md"):
|
|
669
|
+
return False
|
|
670
|
+
next_char = path[len(prefix) : len(prefix) + 1]
|
|
671
|
+
return next_char.isdigit()
|
|
672
|
+
|
|
673
|
+
|
|
654
674
|
def is_plan_pr(
|
|
655
675
|
title: str,
|
|
656
676
|
labels: Iterable[str],
|
|
@@ -658,13 +678,22 @@ def is_plan_pr(
|
|
|
658
678
|
) -> bool:
|
|
659
679
|
"""Plan PR detection per Component 2 rule 1.
|
|
660
680
|
|
|
661
|
-
A PR is a plan PR if
|
|
681
|
+
A PR is a plan PR if ALL three conditions hold:
|
|
662
682
|
- title matches ``docs(roadmap):`` OR ``docs(<cycle>):``,
|
|
663
683
|
OR the PR has the label ``plan-pr``;
|
|
664
|
-
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
684
|
+
- every changed file is under ``docs/`` (no code paths) — a plan
|
|
685
|
+
PR may include supporting docs (ADR, engineering doc) in the
|
|
686
|
+
same change, so we accept the broader ``docs/`` prefix here;
|
|
687
|
+
- AND at least one changed file is itself a cycle doc matching
|
|
688
|
+
``docs/roadmap/cycles/cycle*.md``.
|
|
689
|
+
|
|
690
|
+
The third condition narrows what used to be a too-broad classifier
|
|
691
|
+
(issue #25): editing only ``docs/roadmap/dark-factory-roadmap.md``
|
|
692
|
+
or ``docs/roadmap/roadmap-overview.md`` is a routine index refresh,
|
|
693
|
+
not a plan PR — forcing the full plan-PR trailer contract on those
|
|
694
|
+
edits required manufacturing throwaway cycle docs + tracking
|
|
695
|
+
issues. The plan-PR contract now fires only when the diff actually
|
|
696
|
+
creates or updates a cycle doc.
|
|
668
697
|
"""
|
|
669
698
|
label_match = any(label.strip().lower() == "plan-pr" for label in labels)
|
|
670
699
|
title_match = bool(PLAN_TITLE_RE.match(title or ""))
|
|
@@ -672,7 +701,8 @@ def is_plan_pr(
|
|
|
672
701
|
if not files:
|
|
673
702
|
return False
|
|
674
703
|
docs_only = all(p.startswith("docs/") or p == "AGENTS.md" or p == "CLAUDE.md" for p in files)
|
|
675
|
-
|
|
704
|
+
cycle_doc_in_diff = any(_is_cycle_doc_path(p) for p in files)
|
|
705
|
+
return (label_match or title_match) and docs_only and cycle_doc_in_diff
|
|
676
706
|
|
|
677
707
|
|
|
678
708
|
def status_completion_in_diff(diff: str) -> list[str]:
|
package/dist/doctor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AdapterRegistry } from "./adapters/critic.js";
|
|
2
2
|
import type { LoadedConfig } from "./policy/config.js";
|
|
3
3
|
import type { BootstrapResult } from "./doppler-bootstrap.js";
|
|
4
|
-
import type { DoctorCheck } from "@momentiq/dark-factory-schemas";
|
|
4
|
+
import type { AgentReviewConfig, DoctorCheck } from "@momentiq/dark-factory-schemas";
|
|
5
5
|
export interface DoctorOptions {
|
|
6
6
|
loaded: LoadedConfig;
|
|
7
7
|
registry: AdapterRegistry;
|
|
@@ -9,4 +9,54 @@ export interface DoctorOptions {
|
|
|
9
9
|
profileName?: string;
|
|
10
10
|
}
|
|
11
11
|
export declare function runDoctor(options: DoctorOptions): Promise<DoctorCheck[]>;
|
|
12
|
+
export declare const CLOUD_ENV_MARKERS: readonly ["CODESPACES", "REMOTE_CONTAINERS", "CLAUDE_CODE_SANDBOX", "DEVCONTAINER"];
|
|
13
|
+
export type CloudEnvMarker = (typeof CLOUD_ENV_MARKERS)[number];
|
|
14
|
+
export interface CloudEnvDetection {
|
|
15
|
+
detected: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The subset of `CLOUD_ENV_MARKERS` whose values were truthy in
|
|
18
|
+
* `process.env` at detection time (each one of "true", "1", "yes",
|
|
19
|
+
* case-insensitive; presence-only markers like a non-empty
|
|
20
|
+
* `CODESPACE_NAME` are NOT considered — keep the contract explicit
|
|
21
|
+
* boolean-ish to avoid false positives from generic env-set state).
|
|
22
|
+
*/
|
|
23
|
+
markers: CloudEnvMarker[];
|
|
24
|
+
}
|
|
25
|
+
export interface DetectCloudEnvOptions {
|
|
26
|
+
env?: NodeJS.ProcessEnv;
|
|
27
|
+
}
|
|
28
|
+
export declare function detectCloudEnv(options?: DetectCloudEnvOptions): CloudEnvDetection;
|
|
29
|
+
export type DoctorTriageState = "config_missing" | "auth_pending" | "ok";
|
|
30
|
+
export interface ClassifyDoctorStateOptions {
|
|
31
|
+
config: AgentReviewConfig;
|
|
32
|
+
/**
|
|
33
|
+
* The resolved profile name the CLI used. `undefined` means the
|
|
34
|
+
* caller invoked `df doctor` without `--profile` AND no
|
|
35
|
+
* `AGENT_REVIEW_PROFILE` was set — only meaningful in back-compat
|
|
36
|
+
* configs that have no `profiles` map at all.
|
|
37
|
+
*/
|
|
38
|
+
profileName: string | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* The per-check DoctorCheck array `runDoctor` returns. The
|
|
41
|
+
* classifier inspects only the per-critic auth checks
|
|
42
|
+
* (`<criticId>.<probe>` names) — base-infra checks are intentionally
|
|
43
|
+
* ignored so a missing node binary doesn't masquerade as a
|
|
44
|
+
* subscription-auth failure.
|
|
45
|
+
*/
|
|
46
|
+
perCriticChecks: readonly DoctorCheck[];
|
|
47
|
+
}
|
|
48
|
+
export interface DoctorTriageResult {
|
|
49
|
+
state: DoctorTriageState;
|
|
50
|
+
/**
|
|
51
|
+
* Single-line headline (no embedded newlines). Format: `[<TAG>] ...`
|
|
52
|
+
* where TAG is one of `CONFIG`, `AUTH`, `OK`. The bracketed prefix
|
|
53
|
+
* makes the line greppable AND distinguishes it from the per-check
|
|
54
|
+
* `[OK]/[INFO]/[FAIL]` lines `cmdDoctor` emits underneath.
|
|
55
|
+
*/
|
|
56
|
+
line: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function classifyDoctorState(options: ClassifyDoctorStateOptions): DoctorTriageResult;
|
|
59
|
+
export declare function sweepOrphanLocks(artifactDir: string): DoctorCheck;
|
|
60
|
+
export declare const CACHE_TREE_CORRUPTION_REGEX: RegExp;
|
|
61
|
+
export declare function probeCacheTree(repoRoot: string): Promise<DoctorCheck>;
|
|
12
62
|
//# sourceMappingURL=doctor.d.ts.map
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAIxC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAK1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAO5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA4L9E;AAuBD,eAAO,MAAM,iBAAiB,qFAKpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,wBAAgB,cAAc,CAC5B,OAAO,GAAE,qBAA0B,GAClC,iBAAiB,CAYnB;AAiPD,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,cAAc,GACd,IAAI,CAAC;AAET,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;;;;;OAMG;IACH,eAAe,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,iBAAiB,CAAC;IACzB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,kBAAkB,CAiDpB;AA0BD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAwDjE;AAoED,eAAO,MAAM,2BAA2B,QACQ,CAAC;AA8GjD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6F3E"}
|