@duckcodeailabs/dql-agent 1.6.21 → 1.6.23

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 (160) hide show
  1. package/dist/agent-run-engine.d.ts +287 -0
  2. package/dist/agent-run-engine.d.ts.map +1 -0
  3. package/dist/agent-run-engine.js +916 -0
  4. package/dist/agent-run-engine.js.map +1 -0
  5. package/dist/agent-run-gates.d.ts +26 -0
  6. package/dist/agent-run-gates.d.ts.map +1 -0
  7. package/dist/agent-run-gates.js +170 -0
  8. package/dist/agent-run-gates.js.map +1 -0
  9. package/dist/agent-run-planner.d.ts +32 -0
  10. package/dist/agent-run-planner.d.ts.map +1 -0
  11. package/dist/agent-run-planner.js +280 -0
  12. package/dist/agent-run-planner.js.map +1 -0
  13. package/dist/answer-loop.d.ts +49 -0
  14. package/dist/answer-loop.d.ts.map +1 -1
  15. package/dist/answer-loop.js +292 -17
  16. package/dist/answer-loop.js.map +1 -1
  17. package/dist/app-builder.d.ts +6 -0
  18. package/dist/app-builder.d.ts.map +1 -1
  19. package/dist/app-builder.js +95 -2
  20. package/dist/app-builder.js.map +1 -1
  21. package/dist/app-planner.d.ts +78 -0
  22. package/dist/app-planner.d.ts.map +1 -0
  23. package/dist/app-planner.js +145 -0
  24. package/dist/app-planner.js.map +1 -0
  25. package/dist/embeddings/provider.d.ts +66 -0
  26. package/dist/embeddings/provider.d.ts.map +1 -0
  27. package/dist/embeddings/provider.js +105 -0
  28. package/dist/embeddings/provider.js.map +1 -0
  29. package/dist/hints/git-store.d.ts +69 -0
  30. package/dist/hints/git-store.d.ts.map +1 -0
  31. package/dist/hints/git-store.js +244 -0
  32. package/dist/hints/git-store.js.map +1 -0
  33. package/dist/hints/retrieval.d.ts +49 -0
  34. package/dist/hints/retrieval.d.ts.map +1 -0
  35. package/dist/hints/retrieval.js +60 -0
  36. package/dist/hints/retrieval.js.map +1 -0
  37. package/dist/hints/store.d.ts +39 -0
  38. package/dist/hints/store.d.ts.map +1 -0
  39. package/dist/hints/store.js +279 -0
  40. package/dist/hints/store.js.map +1 -0
  41. package/dist/hints/types.d.ts +147 -0
  42. package/dist/hints/types.d.ts.map +1 -0
  43. package/dist/hints/types.js +92 -0
  44. package/dist/hints/types.js.map +1 -0
  45. package/dist/index.d.ts +43 -6
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +35 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/intent-controller.d.ts +63 -0
  50. package/dist/intent-controller.d.ts.map +1 -0
  51. package/dist/intent-controller.js +150 -0
  52. package/dist/intent-controller.js.map +1 -0
  53. package/dist/kg/build.d.ts.map +1 -1
  54. package/dist/kg/build.js +2 -0
  55. package/dist/kg/build.js.map +1 -1
  56. package/dist/kg/sqlite-fts.js +4 -0
  57. package/dist/kg/sqlite-fts.js.map +1 -1
  58. package/dist/kg/types.d.ts +10 -0
  59. package/dist/kg/types.d.ts.map +1 -1
  60. package/dist/metadata/catalog.d.ts +81 -4
  61. package/dist/metadata/catalog.d.ts.map +1 -1
  62. package/dist/metadata/catalog.js +208 -1
  63. package/dist/metadata/catalog.js.map +1 -1
  64. package/dist/metadata/drafts.d.ts +22 -0
  65. package/dist/metadata/drafts.d.ts.map +1 -1
  66. package/dist/metadata/drafts.js +126 -2
  67. package/dist/metadata/drafts.js.map +1 -1
  68. package/dist/metadata/grain-gate.d.ts +61 -0
  69. package/dist/metadata/grain-gate.d.ts.map +1 -0
  70. package/dist/metadata/grain-gate.js +265 -0
  71. package/dist/metadata/grain-gate.js.map +1 -0
  72. package/dist/metadata/identity.d.ts +47 -0
  73. package/dist/metadata/identity.d.ts.map +1 -0
  74. package/dist/metadata/identity.js +147 -0
  75. package/dist/metadata/identity.js.map +1 -0
  76. package/dist/metadata/metric-match.d.ts +93 -0
  77. package/dist/metadata/metric-match.d.ts.map +1 -0
  78. package/dist/metadata/metric-match.js +233 -0
  79. package/dist/metadata/metric-match.js.map +1 -0
  80. package/dist/metadata/sql-grounding.d.ts +149 -0
  81. package/dist/metadata/sql-grounding.d.ts.map +1 -0
  82. package/dist/metadata/sql-grounding.js +397 -0
  83. package/dist/metadata/sql-grounding.js.map +1 -0
  84. package/dist/metadata/sql-retrieval.d.ts +29 -0
  85. package/dist/metadata/sql-retrieval.d.ts.map +1 -0
  86. package/dist/metadata/sql-retrieval.js +79 -0
  87. package/dist/metadata/sql-retrieval.js.map +1 -0
  88. package/dist/narrate.d.ts +52 -0
  89. package/dist/narrate.d.ts.map +1 -0
  90. package/dist/narrate.js +263 -0
  91. package/dist/narrate.js.map +1 -0
  92. package/dist/propose/build-from-prompt.d.ts +160 -0
  93. package/dist/propose/build-from-prompt.d.ts.map +1 -0
  94. package/dist/propose/build-from-prompt.js +815 -0
  95. package/dist/propose/build-from-prompt.js.map +1 -0
  96. package/dist/propose/classify.d.ts +55 -0
  97. package/dist/propose/classify.d.ts.map +1 -0
  98. package/dist/propose/classify.js +167 -0
  99. package/dist/propose/classify.js.map +1 -0
  100. package/dist/propose/config.d.ts +39 -0
  101. package/dist/propose/config.d.ts.map +1 -0
  102. package/dist/propose/config.js +52 -0
  103. package/dist/propose/config.js.map +1 -0
  104. package/dist/propose/dbt-artifacts.d.ts +134 -0
  105. package/dist/propose/dbt-artifacts.d.ts.map +1 -0
  106. package/dist/propose/dbt-artifacts.js +320 -0
  107. package/dist/propose/dbt-artifacts.js.map +1 -0
  108. package/dist/propose/edit-block.d.ts +74 -0
  109. package/dist/propose/edit-block.d.ts.map +1 -0
  110. package/dist/propose/edit-block.js +133 -0
  111. package/dist/propose/edit-block.js.map +1 -0
  112. package/dist/propose/enrich.d.ts +48 -0
  113. package/dist/propose/enrich.d.ts.map +1 -0
  114. package/dist/propose/enrich.js +125 -0
  115. package/dist/propose/enrich.js.map +1 -0
  116. package/dist/propose/generate-sql.d.ts +61 -0
  117. package/dist/propose/generate-sql.d.ts.map +1 -0
  118. package/dist/propose/generate-sql.js +180 -0
  119. package/dist/propose/generate-sql.js.map +1 -0
  120. package/dist/propose/index.d.ts +24 -0
  121. package/dist/propose/index.d.ts.map +1 -0
  122. package/dist/propose/index.js +15 -0
  123. package/dist/propose/index.js.map +1 -0
  124. package/dist/propose/propose.d.ts +226 -0
  125. package/dist/propose/propose.d.ts.map +1 -0
  126. package/dist/propose/propose.js +668 -0
  127. package/dist/propose/propose.js.map +1 -0
  128. package/dist/propose/reflect-block.d.ts +99 -0
  129. package/dist/propose/reflect-block.d.ts.map +1 -0
  130. package/dist/propose/reflect-block.js +220 -0
  131. package/dist/propose/reflect-block.js.map +1 -0
  132. package/dist/propose/write-draft.d.ts +90 -0
  133. package/dist/propose/write-draft.d.ts.map +1 -0
  134. package/dist/propose/write-draft.js +185 -0
  135. package/dist/propose/write-draft.js.map +1 -0
  136. package/dist/providers/claude.d.ts +13 -1
  137. package/dist/providers/claude.d.ts.map +1 -1
  138. package/dist/providers/claude.js +20 -2
  139. package/dist/providers/claude.js.map +1 -1
  140. package/dist/providers/gemini.d.ts +13 -1
  141. package/dist/providers/gemini.d.ts.map +1 -1
  142. package/dist/providers/gemini.js +24 -3
  143. package/dist/providers/gemini.js.map +1 -1
  144. package/dist/providers/index.d.ts +3 -3
  145. package/dist/providers/index.d.ts.map +1 -1
  146. package/dist/providers/index.js +3 -3
  147. package/dist/providers/index.js.map +1 -1
  148. package/dist/research-loop.d.ts +62 -0
  149. package/dist/research-loop.d.ts.map +1 -0
  150. package/dist/research-loop.js +210 -0
  151. package/dist/research-loop.js.map +1 -0
  152. package/dist/skills/defaults.d.ts +37 -0
  153. package/dist/skills/defaults.d.ts.map +1 -0
  154. package/dist/skills/defaults.js +152 -0
  155. package/dist/skills/defaults.js.map +1 -0
  156. package/dist/skills/loader.d.ts +60 -0
  157. package/dist/skills/loader.d.ts.map +1 -1
  158. package/dist/skills/loader.js +164 -2
  159. package/dist/skills/loader.js.map +1 -1
  160. package/package.json +7 -5
@@ -0,0 +1,226 @@
1
+ /**
2
+ * `dql propose` engine — turn dbt evidence into a ranked queue of DRAFT blocks.
3
+ *
4
+ * Product principle: **AI drafts, humans certify.** A new user should not author
5
+ * DQL from a blank file. This engine scans dbt artifacts and proposes a draft
6
+ * governance layer: one `block` per high-value model, born `status: draft`, run
7
+ * through the Certifier (results stored so a reviewer sees "what's missing to
8
+ * certify"), and demand-ranked by downstream value.
9
+ *
10
+ * Hard rules enforced here:
11
+ * - Nothing is ever emitted with `status: certified`. Promotion is a separate
12
+ * human action (`dql certify --from-draft`).
13
+ * - Re-running is idempotent: an existing draft / certified / review block for
14
+ * the same model is never overwritten or duplicated.
15
+ * - Inference is conservative — grain/pattern/outputs are only set when the
16
+ * evidence is obvious, and invariants are limited to provably-safe checks.
17
+ */
18
+ import { type Classification } from './classify.js';
19
+ import { type ProposeConfig, type ProposeConfigInput } from './config.js';
20
+ import type { EnrichedContent } from './enrich.js';
21
+ export interface ProposeOptions {
22
+ projectRoot: string;
23
+ dbtManifestPath: string;
24
+ /** Default owner stamped on drafts (reviewer fills in if blank). */
25
+ owner?: string;
26
+ /**
27
+ * Cap on the number of drafts written in one run. Keeps the queue reviewable
28
+ * on large dbt projects. undefined = no cap.
29
+ */
30
+ limit?: number;
31
+ /**
32
+ * When true, score and rank but do not write any files. Useful for previews.
33
+ */
34
+ dryRun?: boolean;
35
+ /**
36
+ * Set of model/block slugs that already exist in the project (drafts or
37
+ * certified). When omitted, the engine derives it by checking the filesystem.
38
+ * Injectable for tests.
39
+ */
40
+ existingBlockSlugs?: Set<string>;
41
+ /**
42
+ * Optional `propose` config block (from `dql.config.json`). Refines the
43
+ * classifier conventions, bounded selection, and AI-enrichment toggle.
44
+ * Defaults apply for every field when omitted.
45
+ */
46
+ config?: ProposeConfigInput | null;
47
+ /**
48
+ * When provided, restrict generation to exactly these block slugs (the human
49
+ * "approved scope"). Pass 1 classification still scans all models; only the
50
+ * selected, approved slugs are inferred + certified + written. Reuses the
51
+ * same bounded-selection path otherwise.
52
+ */
53
+ onlySlugs?: string[];
54
+ /**
55
+ * Optional pre-computed AI enrichment (keyed by slug), produced asynchronously
56
+ * by the generate path. When present for a slug, its `description`/`llmContext`/
57
+ * `examples` override the deterministic dbt-derived content. The engine never
58
+ * calls a provider itself — enrichment is consumed here as plain data, so
59
+ * `propose()` stays sync, deterministic, and offline-safe.
60
+ */
61
+ enrichedBySlug?: Map<string, EnrichedContent>;
62
+ }
63
+ export type ProposedPattern = 'entity_profile' | 'metric_wrapper' | 'entity_rollup' | 'trend' | 'custom';
64
+ export interface ProposalInference {
65
+ pattern: ProposedPattern;
66
+ grain?: string;
67
+ declaredOutputs: string[];
68
+ entities: string[];
69
+ llmContext?: string;
70
+ invariants: string[];
71
+ examples: Array<{
72
+ question: string;
73
+ sql?: string;
74
+ }>;
75
+ tags: string[];
76
+ }
77
+ export interface ProposalRanking {
78
+ /** Number of dbt models that depend on this model (downstream fan-out). */
79
+ fanOut: number;
80
+ /** Whether a dbt exposure references this model. */
81
+ exposureLinked: boolean;
82
+ /** Recorded runs from run_results.json (0 when unavailable). */
83
+ runCount: number;
84
+ /** Composite score used to order the queue (higher = more valuable). */
85
+ score: number;
86
+ }
87
+ export interface ProposalResult {
88
+ model: string;
89
+ slug: string;
90
+ domain: string;
91
+ /** Deterministic business-layer classification (business | plumbing | niche). */
92
+ classification: Classification;
93
+ /** Human-readable signals that drove the classification + selection. */
94
+ evidence: string[];
95
+ /** Owner derived from dbt meta, if present. */
96
+ owner?: string;
97
+ inference: ProposalInference;
98
+ ranking: ProposalRanking;
99
+ /** Path written (relative to projectRoot), or undefined when skipped/dry-run. */
100
+ path?: string;
101
+ /** Why a draft was skipped (already exists), if applicable. */
102
+ skipped?: string;
103
+ /** Stored Certifier verdict so a reviewer sees what's missing to certify. */
104
+ certification: {
105
+ certified: false;
106
+ errors: Array<{
107
+ rule: string;
108
+ message: string;
109
+ }>;
110
+ warnings: Array<{
111
+ rule: string;
112
+ message: string;
113
+ }>;
114
+ };
115
+ }
116
+ export interface ProposeSummary {
117
+ projectName?: string;
118
+ modelsScanned: number;
119
+ /** Models classified `business` by the cascade. */
120
+ businessModels: number;
121
+ /** Models classified `plumbing` and excluded from generation. */
122
+ plumbingExcluded: number;
123
+ /** Semantic metrics discovered in the manifest. */
124
+ metricsFound: number;
125
+ proposalsRanked: number;
126
+ draftsWritten: number;
127
+ draftsSkipped: number;
128
+ /** Resolved propose config used for this run. */
129
+ config: ProposeConfig;
130
+ proposals: ProposalResult[];
131
+ }
132
+ /**
133
+ * Run the proposal engine end to end: load artifacts, classify (cheap pass),
134
+ * select a bounded business-only seed, then — for the selection ONLY — infer
135
+ * grain/pattern/outputs/invariants and run the Certifier, write drafts, and
136
+ * store verdicts. Returns a deterministic, ranked summary.
137
+ *
138
+ * Plumbing/niche models are EXCLUDED from generation (never written), and the
139
+ * expensive Pass-2 work (inference + Certifier) runs only on the bounded
140
+ * selection — at 10k models this is hundreds of inferences, not thousands.
141
+ */
142
+ export declare function propose(options: ProposeOptions): ProposeSummary;
143
+ export interface ProposePlanCandidate {
144
+ model: string;
145
+ slug: string;
146
+ score: number;
147
+ classification: Classification;
148
+ owner?: string;
149
+ /** Human-readable signals (e.g. "feeds 2 exposures", "marts/ folder"). */
150
+ evidence: string[];
151
+ /** Optional cheap-pass grain/pattern hints (may be omitted in the plan). */
152
+ grain?: string;
153
+ pattern?: ProposedPattern;
154
+ /**
155
+ * OPTIONAL "transparent preview" fields (spec 14, part A). Left undefined by
156
+ * the cheap `proposePlan()` so the plan stays O(N) and Certifier-free for all
157
+ * candidates. The `/api/propose/preview?slug=` endpoint fills them for ONE
158
+ * candidate by running real SQL generation + the Certifier + (best-effort) AI
159
+ * enrichment, so the UI can show the actual SQL/logic before a human commits.
160
+ */
161
+ sqlPreview?: string;
162
+ description?: string;
163
+ llmContext?: string;
164
+ examples?: string[];
165
+ outputs?: string[];
166
+ certifierVerdict?: {
167
+ blocking: string[];
168
+ warnings: string[];
169
+ ready: boolean;
170
+ };
171
+ }
172
+ export interface ProposePlanDomain {
173
+ name: string;
174
+ owner?: string;
175
+ modelCount: number;
176
+ candidates: ProposePlanCandidate[];
177
+ }
178
+ export interface ProposePlan {
179
+ totals: {
180
+ modelsScanned: number;
181
+ businessModels: number;
182
+ plumbingExcluded: number;
183
+ metricsFound: number;
184
+ };
185
+ willGenerate: number;
186
+ willSkip: number;
187
+ domains: ProposePlanDomain[];
188
+ /** Resolved propose config used to build the plan. */
189
+ config: ProposeConfig;
190
+ }
191
+ export interface ProposePlanOptions {
192
+ config?: ProposeConfigInput | null;
193
+ /** When true, omit cheap grain/pattern hints (pure classify-only plan). */
194
+ skipHints?: boolean;
195
+ }
196
+ /**
197
+ * Build a deterministic PLAN of what `propose` WOULD generate — and writes
198
+ * NOTHING. Reuses the cheap Pass-1 scan + bounded selection so the plan is an
199
+ * exact preview of the generated scope. Grain/pattern hints are cheap and
200
+ * optional (folder/column heuristics, no Certifier). Same input → same plan.
201
+ */
202
+ export declare function proposePlan(projectRoot: string, dbtManifestPath: string, options?: ProposePlanOptions): ProposePlan;
203
+ export interface ProposePreviewOptions {
204
+ config?: ProposeConfigInput | null;
205
+ /** Default owner for the Certifier verdict (so "Missing owner" is suppressed). */
206
+ owner?: string;
207
+ /**
208
+ * Optional pre-computed AI enrichment for this slug. When present, its
209
+ * description/llmContext/examples override the deterministic dbt-derived
210
+ * content. The engine never calls a provider itself.
211
+ */
212
+ enriched?: EnrichedContent;
213
+ }
214
+ /**
215
+ * Build the FILLED preview for a single candidate slug: real aggregation/
216
+ * projection SQL (via `buildBusinessQuery`, NOT select-*), declared outputs,
217
+ * description, llmContext, examples, and the Certifier verdict
218
+ * ({ blocking, warnings, ready }). Writes NOTHING.
219
+ *
220
+ * This is the lazy/expensive path: `proposePlan()` stays cheap for all
221
+ * candidates; this runs inference + SQL generation + the Certifier for ONE slug
222
+ * only. Returns `undefined` when the slug is not part of the bounded,
223
+ * business-only selection (so the caller can 404).
224
+ */
225
+ export declare function buildProposePreview(projectRoot: string, dbtManifestPath: string, slug: string, options?: ProposePreviewOptions): ProposePlanCandidate | undefined;
226
+ //# sourceMappingURL=propose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../src/propose/propose.ts"],"names":[],"mappings":"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"}