@momentiq/dark-factory-cli 0.1.0-alpha.4
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/LICENSE +201 -0
- package/README.md +150 -0
- package/dist/adapters/_shared.d.ts +45 -0
- package/dist/adapters/_shared.d.ts.map +1 -0
- package/dist/adapters/_shared.js +200 -0
- package/dist/adapters/_shared.js.map +1 -0
- package/dist/adapters/codex-sdk.d.ts +279 -0
- package/dist/adapters/codex-sdk.d.ts.map +1 -0
- package/dist/adapters/codex-sdk.js +930 -0
- package/dist/adapters/codex-sdk.js.map +1 -0
- package/dist/adapters/critic-result-schema.d.ts +215 -0
- package/dist/adapters/critic-result-schema.d.ts.map +1 -0
- package/dist/adapters/critic-result-schema.js +153 -0
- package/dist/adapters/critic-result-schema.js.map +1 -0
- package/dist/adapters/critic.d.ts +62 -0
- package/dist/adapters/critic.d.ts.map +1 -0
- package/dist/adapters/critic.js +79 -0
- package/dist/adapters/critic.js.map +1 -0
- package/dist/adapters/cursor-sdk.d.ts +153 -0
- package/dist/adapters/cursor-sdk.d.ts.map +1 -0
- package/dist/adapters/cursor-sdk.js +818 -0
- package/dist/adapters/cursor-sdk.js.map +1 -0
- package/dist/adapters/gemini-sdk.d.ts +113 -0
- package/dist/adapters/gemini-sdk.d.ts.map +1 -0
- package/dist/adapters/gemini-sdk.js +532 -0
- package/dist/adapters/gemini-sdk.js.map +1 -0
- package/dist/adapters/grok-direct-sdk.d.ts +148 -0
- package/dist/adapters/grok-direct-sdk.d.ts.map +1 -0
- package/dist/adapters/grok-direct-sdk.js +694 -0
- package/dist/adapters/grok-direct-sdk.js.map +1 -0
- package/dist/branch-protection/audit_branch_protection.py +759 -0
- package/dist/branch-protection/index.d.ts +25 -0
- package/dist/branch-protection/index.d.ts.map +1 -0
- package/dist/branch-protection/index.js +70 -0
- package/dist/branch-protection/index.js.map +1 -0
- package/dist/branch-protection/spec-default.yaml +314 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +581 -0
- package/dist/cli.js.map +1 -0
- package/dist/cycle-doc-validator/index.d.ts +43 -0
- package/dist/cycle-doc-validator/index.d.ts.map +1 -0
- package/dist/cycle-doc-validator/index.js +69 -0
- package/dist/cycle-doc-validator/index.js.map +1 -0
- package/dist/cycle-doc-validator/validate_cycle_doc.py +1260 -0
- package/dist/cycle-tracker-sync/attribute_pr_cycle_ref.py +384 -0
- package/dist/cycle-tracker-sync/index.d.ts +20 -0
- package/dist/cycle-tracker-sync/index.d.ts.map +1 -0
- package/dist/cycle-tracker-sync/index.js +71 -0
- package/dist/cycle-tracker-sync/index.js.map +1 -0
- package/dist/cycle-tracker-sync/sync_cycle_trackers.py +1093 -0
- package/dist/evidence/audit-trail.d.ts +59 -0
- package/dist/evidence/audit-trail.d.ts.map +1 -0
- package/dist/evidence/audit-trail.js +283 -0
- package/dist/evidence/audit-trail.js.map +1 -0
- package/dist/evidence/index.d.ts +4 -0
- package/dist/evidence/index.d.ts.map +1 -0
- package/dist/evidence/index.js +29 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/per-sha.d.ts +13 -0
- package/dist/evidence/per-sha.d.ts.map +1 -0
- package/dist/evidence/per-sha.js +97 -0
- package/dist/evidence/per-sha.js.map +1 -0
- package/dist/evidence/quality-gates.d.ts +19 -0
- package/dist/evidence/quality-gates.d.ts.map +1 -0
- package/dist/evidence/quality-gates.js +212 -0
- package/dist/evidence/quality-gates.js.map +1 -0
- package/dist/git.d.ts +40 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +414 -0
- package/dist/git.js.map +1 -0
- package/dist/glob.d.ts +4 -0
- package/dist/glob.d.ts.map +1 -0
- package/dist/glob.js +99 -0
- package/dist/glob.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +12 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +42 -0
- package/dist/paths.js.map +1 -0
- package/dist/policy/baseline.d.ts +15 -0
- package/dist/policy/baseline.d.ts.map +1 -0
- package/dist/policy/baseline.js +115 -0
- package/dist/policy/baseline.js.map +1 -0
- package/dist/policy/config.d.ts +64 -0
- package/dist/policy/config.d.ts.map +1 -0
- package/dist/policy/config.js +363 -0
- package/dist/policy/config.js.map +1 -0
- package/dist/policy/gate.d.ts +80 -0
- package/dist/policy/gate.d.ts.map +1 -0
- package/dist/policy/gate.js +1019 -0
- package/dist/policy/gate.js.map +1 -0
- package/dist/policy/index.d.ts +7 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +14 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/merge-queue.d.ts +183 -0
- package/dist/policy/merge-queue.d.ts.map +1 -0
- package/dist/policy/merge-queue.js +310 -0
- package/dist/policy/merge-queue.js.map +1 -0
- package/dist/policy/profile.d.ts +98 -0
- package/dist/policy/profile.d.ts.map +1 -0
- package/dist/policy/profile.js +156 -0
- package/dist/policy/profile.js.map +1 -0
- package/dist/policy/tdd-classifier.d.ts +18 -0
- package/dist/policy/tdd-classifier.d.ts.map +1 -0
- package/dist/policy/tdd-classifier.js +79 -0
- package/dist/policy/tdd-classifier.js.map +1 -0
- package/dist/prompt.d.ts +13 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +175 -0
- package/dist/prompt.js.map +1 -0
- package/dist/report.d.ts +88 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +376 -0
- package/dist/report.js.map +1 -0
- package/dist/runner.d.ts +30 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +456 -0
- package/dist/runner.js.map +1 -0
- package/dist/security.d.ts +2 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +19 -0
- package/dist/security.js.map +1 -0
- package/dist/trusted-surface/rebind.d.ts +10 -0
- package/dist/trusted-surface/rebind.d.ts.map +1 -0
- package/dist/trusted-surface/rebind.js +154 -0
- package/dist/trusted-surface/rebind.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { type CriticConfig, type CriticResult, type DoctorCheck, type ReviewPacket } from "@momentiq/dark-factory-schemas";
|
|
2
|
+
import type { CriticAdapter, CriticReviewOptions } from "./critic.js";
|
|
3
|
+
export declare const GROK_DIRECT_SDK_ADAPTER_ID = "grok-direct-sdk";
|
|
4
|
+
export declare const XAI_API_KEY_ENV = "XAI_API_KEY";
|
|
5
|
+
export declare const XAI_BASE_URL = "https://api.x.ai/v1";
|
|
6
|
+
export declare const GROK_PERMANENT_STATUS: ReadonlySet<number>;
|
|
7
|
+
export declare const DEFAULT_REASONING_EFFORT: "high";
|
|
8
|
+
export type GrokReasoningEffort = "low" | "medium" | "high" | "none";
|
|
9
|
+
/**
|
|
10
|
+
* Test-shape compatible with the `openai` SDK's OpenAI client. The
|
|
11
|
+
* unit tests pass a mock conforming to this shape; production passes
|
|
12
|
+
* the real `new OpenAI({ apiKey, baseURL })` instance through the
|
|
13
|
+
* `createClient` factory on the adapter constructor.
|
|
14
|
+
*
|
|
15
|
+
* Documenting this shape here (rather than relying on the SDK's
|
|
16
|
+
* exported type) lets the test mocks stay narrow and resilient to
|
|
17
|
+
* SDK internal shape changes. The adapter uses ONLY the surface
|
|
18
|
+
* declared here — every SDK method the adapter calls is on this
|
|
19
|
+
* interface, so an SDK upgrade that re-shapes other surfaces won't
|
|
20
|
+
* silently break the adapter.
|
|
21
|
+
*/
|
|
22
|
+
export interface GrokClient {
|
|
23
|
+
responses: {
|
|
24
|
+
create: (params: GrokResponsesCreateParams, requestOptions?: {
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}) => Promise<AsyncIterable<GrokStreamEvent>>;
|
|
27
|
+
};
|
|
28
|
+
models: {
|
|
29
|
+
list: () => AsyncIterable<{
|
|
30
|
+
id?: string;
|
|
31
|
+
}> | Promise<AsyncIterable<{
|
|
32
|
+
id?: string;
|
|
33
|
+
}>>;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface GrokResponsesCreateParams {
|
|
37
|
+
model: string;
|
|
38
|
+
reasoning?: {
|
|
39
|
+
effort?: GrokReasoningEffort;
|
|
40
|
+
};
|
|
41
|
+
input: Array<{
|
|
42
|
+
role: "system" | "user" | "assistant";
|
|
43
|
+
content: string;
|
|
44
|
+
}>;
|
|
45
|
+
text?: {
|
|
46
|
+
format?: {
|
|
47
|
+
type: "json_object";
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
store?: false;
|
|
51
|
+
stream: true;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The shape of a single xAI Responses API stream event. xAI mirrors
|
|
55
|
+
* the OpenAI Responses API stream contract, where each event carries
|
|
56
|
+
* a `type` discriminator (`response.output_text.delta`,
|
|
57
|
+
* `response.completed`, `response.failed`, `response.refusal.delta`,
|
|
58
|
+
* etc.). The adapter only reads:
|
|
59
|
+
* - `type` (for dispatch)
|
|
60
|
+
* - `delta` (on output_text.delta — the text accumulator)
|
|
61
|
+
* - `response.usage.input_tokens` + `response.usage.output_tokens`
|
|
62
|
+
* (on response.completed — the telemetry token-usage signal)
|
|
63
|
+
* - `response.refusal_text` or similar (on response.refusal.*; the
|
|
64
|
+
* safety-block permanent-failure path)
|
|
65
|
+
*
|
|
66
|
+
* Field shapes treated as `unknown` so the adapter is resilient to
|
|
67
|
+
* xAI extending the event envelope between when this was written and
|
|
68
|
+
* when it runs. The actual stream event shape is captured in
|
|
69
|
+
* `tools/agent-review/evals/spike-grok-responses-2026-05.md`.
|
|
70
|
+
*/
|
|
71
|
+
export interface GrokStreamEvent {
|
|
72
|
+
type?: string;
|
|
73
|
+
delta?: string;
|
|
74
|
+
response?: {
|
|
75
|
+
id?: string;
|
|
76
|
+
usage?: GrokUsage;
|
|
77
|
+
output?: Array<{
|
|
78
|
+
content?: Array<{
|
|
79
|
+
text?: string;
|
|
80
|
+
type?: string;
|
|
81
|
+
}>;
|
|
82
|
+
}>;
|
|
83
|
+
incomplete_details?: {
|
|
84
|
+
reason?: string;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
refusal?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface GrokUsage {
|
|
90
|
+
input_tokens?: number;
|
|
91
|
+
output_tokens?: number;
|
|
92
|
+
total_tokens?: number;
|
|
93
|
+
output_tokens_details?: {
|
|
94
|
+
reasoning_tokens?: number;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export interface GrokDirectSdkAdapterOptions {
|
|
98
|
+
apiKey?: string;
|
|
99
|
+
createClient?: (apiKey: string) => GrokClient;
|
|
100
|
+
sleep?: (idx: number, signal: AbortSignal | undefined) => Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve the Grok reasoning-effort from the critic config's
|
|
104
|
+
* `model.params`. Falls back to {@link DEFAULT_REASONING_EFFORT}
|
|
105
|
+
* ("high") when unset. Validates against the documented
|
|
106
|
+
* Responses-API surface — invalid values fall back to the default
|
|
107
|
+
* rather than corrupting the request body.
|
|
108
|
+
*
|
|
109
|
+
* Coerces string inputs (the config schema's `value` is
|
|
110
|
+
* `string|number|boolean`; reasoning effort is always a string
|
|
111
|
+
* enum). Booleans and numbers are operator typos and use the
|
|
112
|
+
* default.
|
|
113
|
+
*
|
|
114
|
+
* Exported for direct unit testing (no SDK mock required).
|
|
115
|
+
*/
|
|
116
|
+
export declare function resolveReasoningEffort(critic: CriticConfig): GrokReasoningEffort;
|
|
117
|
+
/**
|
|
118
|
+
* Probe a thrown error for an xAI Responses API HTTP status code.
|
|
119
|
+
* Returns `null` when the error didn't carry one (network error,
|
|
120
|
+
* non-API exception). Exported for direct unit testing.
|
|
121
|
+
*
|
|
122
|
+
* The `openai` SDK throws `APIError extends Error` with a `status:
|
|
123
|
+
* number` field on HTTP-level failures; a non-API failure (DNS,
|
|
124
|
+
* timeout in fetch, etc.) won't have this field set. Treating "no
|
|
125
|
+
* status" as retryable lets the loop catch real transient blips
|
|
126
|
+
* while not silently retrying logic errors.
|
|
127
|
+
*/
|
|
128
|
+
export declare function extractXaiApiErrorStatus(err: unknown): number | null;
|
|
129
|
+
/**
|
|
130
|
+
* Policy gate: decide whether an xAI Responses API failure is
|
|
131
|
+
* retryable. Returns `false` for HTTP statuses in
|
|
132
|
+
* {@link GROK_PERMANENT_STATUS}, `true` otherwise (including
|
|
133
|
+
* no-status network errors).
|
|
134
|
+
*
|
|
135
|
+
* Exported for direct unit testing.
|
|
136
|
+
*/
|
|
137
|
+
export declare function isGrokPermanentFailure(status: number | null): boolean;
|
|
138
|
+
export declare class GrokDirectSdkAdapter implements CriticAdapter {
|
|
139
|
+
private readonly options;
|
|
140
|
+
readonly id = "grok-direct-sdk";
|
|
141
|
+
readonly requiredEnvVars: readonly string[];
|
|
142
|
+
private readonly createClient;
|
|
143
|
+
constructor(options?: GrokDirectSdkAdapterOptions);
|
|
144
|
+
review(packet: ReviewPacket, critic: CriticConfig, options: CriticReviewOptions): Promise<CriticResult>;
|
|
145
|
+
private attemptReview;
|
|
146
|
+
doctor(critic: CriticConfig): Promise<DoctorCheck[]>;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=grok-direct-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-direct-sdk.d.ts","sourceRoot":"","sources":["../../src/adapters/grok-direct-sdk.ts"],"names":[],"mappings":"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"}
|