@wrenai/genbi 0.0.1

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 (286) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +141 -0
  3. package/bin/genbi.mjs +31 -0
  4. package/dist/assets/echarts-LTFC-ysd.js +40 -0
  5. package/dist/assets/index-Bo--QMUN.js +441 -0
  6. package/dist/assets/index-Xs4q7pNo.css +1 -0
  7. package/dist/index.html +14 -0
  8. package/dist/wrenai_logo.png +0 -0
  9. package/dist/wrenai_logo_white.png +0 -0
  10. package/dist-server/harness/auth/detect.d.ts +18 -0
  11. package/dist-server/harness/auth/detect.js +37 -0
  12. package/dist-server/harness/auth/index.d.ts +4 -0
  13. package/dist-server/harness/auth/index.js +2 -0
  14. package/dist-server/harness/auth/probe.d.ts +18 -0
  15. package/dist-server/harness/auth/probe.js +52 -0
  16. package/dist-server/harness/auth/types.d.ts +42 -0
  17. package/dist-server/harness/auth/types.js +9 -0
  18. package/dist-server/harness/bundle/loader.d.ts +32 -0
  19. package/dist-server/harness/bundle/loader.js +43 -0
  20. package/dist-server/harness/bundle/schema.d.ts +199 -0
  21. package/dist-server/harness/bundle/schema.js +127 -0
  22. package/dist-server/harness/bundle/version.d.ts +10 -0
  23. package/dist-server/harness/bundle/version.js +43 -0
  24. package/dist-server/harness/capability/gate.d.ts +6 -0
  25. package/dist-server/harness/capability/gate.js +29 -0
  26. package/dist-server/harness/capability/registry.d.ts +6 -0
  27. package/dist-server/harness/capability/registry.js +17 -0
  28. package/dist-server/harness/cli-args.d.ts +123 -0
  29. package/dist-server/harness/cli-args.js +247 -0
  30. package/dist-server/harness/cli.d.ts +2 -0
  31. package/dist-server/harness/cli.js +151 -0
  32. package/dist-server/harness/compile/cache.d.ts +23 -0
  33. package/dist-server/harness/compile/cache.js +109 -0
  34. package/dist-server/harness/compile/compose-profile.d.ts +34 -0
  35. package/dist-server/harness/compile/compose-profile.js +95 -0
  36. package/dist-server/harness/compile/errors.d.ts +22 -0
  37. package/dist-server/harness/compile/errors.js +41 -0
  38. package/dist-server/harness/compile/fingerprint.d.ts +22 -0
  39. package/dist-server/harness/compile/fingerprint.js +84 -0
  40. package/dist-server/harness/compile/index.d.ts +8 -0
  41. package/dist-server/harness/compile/index.js +7 -0
  42. package/dist-server/harness/compile/pipeline.d.ts +66 -0
  43. package/dist-server/harness/compile/pipeline.js +176 -0
  44. package/dist-server/harness/compile/resolve-binary.d.ts +55 -0
  45. package/dist-server/harness/compile/resolve-binary.js +133 -0
  46. package/dist-server/harness/compile/types.d.ts +107 -0
  47. package/dist-server/harness/compile/types.js +1 -0
  48. package/dist-server/harness/compile/warble-identity.d.ts +12 -0
  49. package/dist-server/harness/compile/warble-identity.js +33 -0
  50. package/dist-server/harness/compliance/gate.d.ts +35 -0
  51. package/dist-server/harness/compliance/gate.js +48 -0
  52. package/dist-server/harness/compliance/index.d.ts +2 -0
  53. package/dist-server/harness/compliance/index.js +1 -0
  54. package/dist-server/harness/compliance/types.d.ts +16 -0
  55. package/dist-server/harness/compliance/types.js +1 -0
  56. package/dist-server/harness/events/emitter.d.ts +34 -0
  57. package/dist-server/harness/events/emitter.js +25 -0
  58. package/dist-server/harness/events/index.d.ts +4 -0
  59. package/dist-server/harness/events/index.js +2 -0
  60. package/dist-server/harness/events/sse.d.ts +20 -0
  61. package/dist-server/harness/events/sse.js +48 -0
  62. package/dist-server/harness/events/types.d.ts +131 -0
  63. package/dist-server/harness/events/types.js +1 -0
  64. package/dist-server/harness/exec/errors.d.ts +16 -0
  65. package/dist-server/harness/exec/errors.js +29 -0
  66. package/dist-server/harness/exec/index.d.ts +5 -0
  67. package/dist-server/harness/exec/index.js +2 -0
  68. package/dist-server/harness/exec/local.d.ts +32 -0
  69. package/dist-server/harness/exec/local.js +134 -0
  70. package/dist-server/harness/exec/policy.d.ts +12 -0
  71. package/dist-server/harness/exec/policy.js +1 -0
  72. package/dist-server/harness/exec/types.d.ts +63 -0
  73. package/dist-server/harness/exec/types.js +1 -0
  74. package/dist-server/harness/guardrails/index.d.ts +2 -0
  75. package/dist-server/harness/guardrails/index.js +1 -0
  76. package/dist-server/harness/guardrails/policy.d.ts +45 -0
  77. package/dist-server/harness/guardrails/policy.js +57 -0
  78. package/dist-server/harness/index.d.ts +37 -0
  79. package/dist-server/harness/index.js +19 -0
  80. package/dist-server/harness/loop/errors.d.ts +53 -0
  81. package/dist-server/harness/loop/errors.js +72 -0
  82. package/dist-server/harness/loop/executor.d.ts +123 -0
  83. package/dist-server/harness/loop/executor.js +380 -0
  84. package/dist-server/harness/loop/guard.d.ts +16 -0
  85. package/dist-server/harness/loop/guard.js +1 -0
  86. package/dist-server/harness/loop/index.d.ts +5 -0
  87. package/dist-server/harness/loop/index.js +3 -0
  88. package/dist-server/harness/native-producer/index.d.ts +109 -0
  89. package/dist-server/harness/native-producer/index.js +302 -0
  90. package/dist-server/harness/npm-package-resolve.d.ts +28 -0
  91. package/dist-server/harness/npm-package-resolve.js +47 -0
  92. package/dist-server/harness/providers/adapters/anthropic.d.ts +7 -0
  93. package/dist-server/harness/providers/adapters/anthropic.js +6 -0
  94. package/dist-server/harness/providers/adapters/mock.d.ts +4 -0
  95. package/dist-server/harness/providers/adapters/mock.js +5 -0
  96. package/dist-server/harness/providers/adapters/openai-compatible.d.ts +10 -0
  97. package/dist-server/harness/providers/adapters/openai-compatible.js +10 -0
  98. package/dist-server/harness/providers/binding.d.ts +23 -0
  99. package/dist-server/harness/providers/binding.js +13 -0
  100. package/dist-server/harness/providers/errors.d.ts +6 -0
  101. package/dist-server/harness/providers/errors.js +12 -0
  102. package/dist-server/harness/providers/index.d.ts +18 -0
  103. package/dist-server/harness/providers/index.js +22 -0
  104. package/dist-server/harness/providers/registry.d.ts +16 -0
  105. package/dist-server/harness/providers/registry.js +24 -0
  106. package/dist-server/harness/render/envelope.d.ts +145 -0
  107. package/dist-server/harness/render/envelope.js +428 -0
  108. package/dist-server/harness/render/errors.d.ts +33 -0
  109. package/dist-server/harness/render/errors.js +46 -0
  110. package/dist-server/harness/render/index.d.ts +5 -0
  111. package/dist-server/harness/render/index.js +3 -0
  112. package/dist-server/harness/render/validate.d.ts +13 -0
  113. package/dist-server/harness/render/validate.js +88 -0
  114. package/dist-server/harness/route/adapter-spec.d.ts +40 -0
  115. package/dist-server/harness/route/adapter-spec.js +61 -0
  116. package/dist-server/harness/route/agent-sdk-cli.d.ts +30 -0
  117. package/dist-server/harness/route/agent-sdk-cli.js +86 -0
  118. package/dist-server/harness/route/agent-sdk-manifest.d.ts +31 -0
  119. package/dist-server/harness/route/agent-sdk-manifest.js +56 -0
  120. package/dist-server/harness/route/artifact-content.d.ts +53 -0
  121. package/dist-server/harness/route/artifact-content.js +83 -0
  122. package/dist-server/harness/route/chat-event-mapper.d.ts +95 -0
  123. package/dist-server/harness/route/chat-event-mapper.js +164 -0
  124. package/dist-server/harness/route/codex-ask-events.d.ts +25 -0
  125. package/dist-server/harness/route/codex-ask-events.js +395 -0
  126. package/dist-server/harness/route/codex-ask.d.ts +15 -0
  127. package/dist-server/harness/route/codex-ask.js +242 -0
  128. package/dist-server/harness/route/codex-local-cli.d.ts +20 -0
  129. package/dist-server/harness/route/codex-local-cli.js +78 -0
  130. package/dist-server/harness/route/codex-local-manifest.d.ts +22 -0
  131. package/dist-server/harness/route/codex-local-manifest.js +180 -0
  132. package/dist-server/harness/route/describe.d.ts +54 -0
  133. package/dist-server/harness/route/describe.js +84 -0
  134. package/dist-server/harness/route/dispatched.d.ts +138 -0
  135. package/dist-server/harness/route/dispatched.js +339 -0
  136. package/dist-server/harness/route/in-process.d.ts +43 -0
  137. package/dist-server/harness/route/in-process.js +106 -0
  138. package/dist-server/harness/route/index.d.ts +19 -0
  139. package/dist-server/harness/route/index.js +12 -0
  140. package/dist-server/harness/route/profile-source.d.ts +37 -0
  141. package/dist-server/harness/route/profile-source.js +76 -0
  142. package/dist-server/harness/route/route.d.ts +33 -0
  143. package/dist-server/harness/route/route.js +114 -0
  144. package/dist-server/harness/route/tier-binding.d.ts +36 -0
  145. package/dist-server/harness/route/tier-binding.js +63 -0
  146. package/dist-server/harness/route/types.d.ts +286 -0
  147. package/dist-server/harness/route/types.js +1 -0
  148. package/dist-server/harness/session/errors.d.ts +4 -0
  149. package/dist-server/harness/session/errors.js +7 -0
  150. package/dist-server/harness/session/gate.d.ts +11 -0
  151. package/dist-server/harness/session/gate.js +13 -0
  152. package/dist-server/harness/session/index.d.ts +5 -0
  153. package/dist-server/harness/session/index.js +3 -0
  154. package/dist-server/harness/session/run.d.ts +60 -0
  155. package/dist-server/harness/session/run.js +333 -0
  156. package/dist-server/harness/session/types.d.ts +29 -0
  157. package/dist-server/harness/session/types.js +1 -0
  158. package/dist-server/harness/setup/codex-events.d.ts +12 -0
  159. package/dist-server/harness/setup/codex-events.js +108 -0
  160. package/dist-server/harness/setup/runner.d.ts +497 -0
  161. package/dist-server/harness/setup/runner.js +1314 -0
  162. package/dist-server/harness/tools/errors.d.ts +107 -0
  163. package/dist-server/harness/tools/errors.js +141 -0
  164. package/dist-server/harness/tools/index.d.ts +13 -0
  165. package/dist-server/harness/tools/index.js +8 -0
  166. package/dist-server/harness/tools/mcp.d.ts +26 -0
  167. package/dist-server/harness/tools/mcp.js +15 -0
  168. package/dist-server/harness/tools/native.d.ts +179 -0
  169. package/dist-server/harness/tools/native.js +322 -0
  170. package/dist-server/harness/tools/parse.d.ts +14 -0
  171. package/dist-server/harness/tools/parse.js +18 -0
  172. package/dist-server/harness/tools/resolve-wren-binary.d.ts +12 -0
  173. package/dist-server/harness/tools/resolve-wren-binary.js +21 -0
  174. package/dist-server/harness/tools/resolve.d.ts +51 -0
  175. package/dist-server/harness/tools/resolve.js +79 -0
  176. package/dist-server/harness/tools/setup-native.d.ts +84 -0
  177. package/dist-server/harness/tools/setup-native.js +353 -0
  178. package/dist-server/harness/tools/wiring.d.ts +10 -0
  179. package/dist-server/harness/tools/wiring.js +16 -0
  180. package/dist-server/providers/setup.provider.yaml +31 -0
  181. package/dist-server/providers/wren.provider.yaml +33 -0
  182. package/dist-server/server/adopt.d.ts +87 -0
  183. package/dist-server/server/adopt.js +263 -0
  184. package/dist-server/server/app.d.ts +6 -0
  185. package/dist-server/server/app.js +2521 -0
  186. package/dist-server/server/auth-choice.d.ts +16 -0
  187. package/dist-server/server/auth-choice.js +36 -0
  188. package/dist-server/server/bin.d.ts +2 -0
  189. package/dist-server/server/bin.js +601 -0
  190. package/dist-server/server/bootstrap-project-binding.d.ts +31 -0
  191. package/dist-server/server/bootstrap-project-binding.js +71 -0
  192. package/dist-server/server/clarify.d.ts +10 -0
  193. package/dist-server/server/clarify.js +17 -0
  194. package/dist-server/server/codex-setup-mcp.d.ts +2 -0
  195. package/dist-server/server/codex-setup-mcp.js +147 -0
  196. package/dist-server/server/compose.d.ts +89 -0
  197. package/dist-server/server/compose.js +271 -0
  198. package/dist-server/server/conn-config.d.ts +30 -0
  199. package/dist-server/server/conn-config.js +253 -0
  200. package/dist-server/server/context-files.d.ts +12 -0
  201. package/dist-server/server/context-files.js +117 -0
  202. package/dist-server/server/context-map.d.ts +30 -0
  203. package/dist-server/server/context-map.js +95 -0
  204. package/dist-server/server/context-source.d.ts +68 -0
  205. package/dist-server/server/context-source.js +85 -0
  206. package/dist-server/server/db.d.ts +862 -0
  207. package/dist-server/server/db.js +1839 -0
  208. package/dist-server/server/enrichment-runner.d.ts +184 -0
  209. package/dist-server/server/enrichment-runner.js +213 -0
  210. package/dist-server/server/enrichment-verify.d.ts +73 -0
  211. package/dist-server/server/enrichment-verify.js +290 -0
  212. package/dist-server/server/enrichment.d.ts +232 -0
  213. package/dist-server/server/enrichment.js +199 -0
  214. package/dist-server/server/env-detect.d.ts +8 -0
  215. package/dist-server/server/env-detect.js +17 -0
  216. package/dist-server/server/env-field-hints.d.ts +46 -0
  217. package/dist-server/server/env-field-hints.js +48 -0
  218. package/dist-server/server/fold.d.ts +133 -0
  219. package/dist-server/server/fold.js +407 -0
  220. package/dist-server/server/harness-profile-sources.d.ts +3 -0
  221. package/dist-server/server/harness-profile-sources.js +24 -0
  222. package/dist-server/server/harness.d.ts +19 -0
  223. package/dist-server/server/harness.js +439 -0
  224. package/dist-server/server/impact.d.ts +18 -0
  225. package/dist-server/server/impact.js +85 -0
  226. package/dist-server/server/interactive-terminal.d.ts +175 -0
  227. package/dist-server/server/interactive-terminal.js +336 -0
  228. package/dist-server/server/native-artifacts.d.ts +1004 -0
  229. package/dist-server/server/native-artifacts.js +564 -0
  230. package/dist-server/server/native-dispatch-registry.d.ts +42 -0
  231. package/dist-server/server/native-dispatch-registry.js +45 -0
  232. package/dist-server/server/native-producer-fence.d.ts +14 -0
  233. package/dist-server/server/native-producer-fence.js +48 -0
  234. package/dist-server/server/native-session-resume.d.ts +6 -0
  235. package/dist-server/server/native-session-resume.js +103 -0
  236. package/dist-server/server/native-session-workspace.d.ts +40 -0
  237. package/dist-server/server/native-session-workspace.js +175 -0
  238. package/dist-server/server/native-sessions.d.ts +374 -0
  239. package/dist-server/server/native-sessions.js +1517 -0
  240. package/dist-server/server/native-wren-runtime.d.ts +20 -0
  241. package/dist-server/server/native-wren-runtime.js +259 -0
  242. package/dist-server/server/node-pty-host.d.ts +31 -0
  243. package/dist-server/server/node-pty-host.js +100 -0
  244. package/dist-server/server/route-intent.d.ts +40 -0
  245. package/dist-server/server/route-intent.js +23 -0
  246. package/dist-server/server/runtime-binding.d.ts +52 -0
  247. package/dist-server/server/runtime-binding.js +258 -0
  248. package/dist-server/server/source-catalog.d.ts +84 -0
  249. package/dist-server/server/source-catalog.js +221 -0
  250. package/dist-server/server/source-driver.d.ts +35 -0
  251. package/dist-server/server/source-driver.js +124 -0
  252. package/dist-server/server/spa.d.ts +2 -0
  253. package/dist-server/server/spa.js +51 -0
  254. package/dist-server/server/subscription-model-catalog.d.ts +27 -0
  255. package/dist-server/server/subscription-model-catalog.js +203 -0
  256. package/dist-server/server/turn.d.ts +249 -0
  257. package/dist-server/server/turn.js +1074 -0
  258. package/dist-server/server/wire-types.d.ts +799 -0
  259. package/dist-server/server/wire-types.js +1 -0
  260. package/dist-server/server/wren-home.d.ts +19 -0
  261. package/dist-server/server/wren-home.js +33 -0
  262. package/dist-server/server/wren-profiles.d.ts +43 -0
  263. package/dist-server/server/wren-profiles.js +123 -0
  264. package/package.json +93 -0
  265. package/profiles/genbi-default/context/binding.yml +9 -0
  266. package/profiles/genbi-default/ir.golden.json +506 -0
  267. package/profiles/genbi-default/profile.yml +16 -0
  268. package/profiles/genbi-enrich-context/components/apply_enrichment/component.yml +42 -0
  269. package/profiles/genbi-enrich-context/components/draft_enrichment/component.yml +30 -0
  270. package/profiles/genbi-enrich-context/components/draft_enrichment/steps/draft.md +34 -0
  271. package/profiles/genbi-enrich-context/components/inspect_context/component.yml +32 -0
  272. package/profiles/genbi-enrich-context/components/inspect_context/steps/inspect.md +13 -0
  273. package/profiles/genbi-enrich-context/context/binding.yml +4 -0
  274. package/profiles/genbi-enrich-context/ir.golden.json +302 -0
  275. package/profiles/genbi-enrich-context/profile.yml +15 -0
  276. package/profiles/genbi-monitor/context/binding.yml +7 -0
  277. package/profiles/genbi-monitor/ir.golden.json +188 -0
  278. package/profiles/genbi-monitor/profile.yml +27 -0
  279. package/profiles/genbi-setup/components/build_context/component.yml +44 -0
  280. package/profiles/genbi-setup/components/build_context/steps/build.md +14 -0
  281. package/profiles/genbi-setup/components/connect_source/component.yml +51 -0
  282. package/profiles/genbi-setup/components/connect_source/steps/connect.md +23 -0
  283. package/profiles/genbi-setup/context/binding.yml +8 -0
  284. package/profiles/genbi-setup/ir.golden.json +140 -0
  285. package/profiles/genbi-setup/profile.yml +18 -0
  286. package/profiles/genbi-setup/raw/schema.json +5 -0
@@ -0,0 +1,51 @@
1
+ # connect_source — onboard a NEW data source into a wren project. First half of the genbi-setup
2
+ # flow (see ../../profile.yml): scaffolds a project and writes an EMPTY .env credential template, but
3
+ # never fills in, reads, or echoes a credential value itself -- that is a human hand-off, enforced
4
+ # both in steps/connect.md and by the setup_execution guardrail below.
5
+ #
6
+ # Deliberately `type: analytical` + `realization_kind: skill` + `outcome.kind: none` -- NOT
7
+ # `constitutive`/`gated-tool`. Dispatch keys on (realization_kind, outcome.kind, trigger.kind), never
8
+ # on id/verb (see .claude/CLAUDE.md invariant #1), so this is a legitimate skill-family component like
9
+ # answer_query, just guarded by `setup_execution` instead of `read_only_execution`. Modeling this as
10
+ # constitutive/gated-tool would pull in the `human_approval` guardrail, which resolves `fail`
11
+ # (safety-critical, no approval channel) on a headless target and loud-fails compilation/dispatch --
12
+ # onboarding must run headless, so it stays on the skill + guarded-Bash lifecycle instead.
13
+
14
+ id: connect_source
15
+ verb: connect_source
16
+ type: analytical
17
+ realization_kind: skill
18
+
19
+ binding_mode: runtime_selected
20
+ context_requirements:
21
+ - "no pre-existing wren project required -- this component scaffolds one from a new data source"
22
+ # No context_precondition: unlike every MDL-consuming component, there is nothing to probe about an
23
+ # existing semantic layer at connect time -- that absence is the entire reason this profile exists.
24
+
25
+ params: []
26
+
27
+ llm_steps:
28
+ # Single strong step: avoids requiring llm:per_step_tier (there is exactly one tier in play, same
29
+ # shape as build_context's single step).
30
+ - { name: connect, tier: strong, prompt_ref: steps/connect.md, produces: connection_summary }
31
+ trigger: { kind: one_shot }
32
+ guardrails:
33
+ # setup_execution (the 5th enforcement point): scoped to the project root ("."). Broadens Bash
34
+ # beyond `wren` (connector CLIs like `dlt`) and allows Write/Edit inside this scope instead of
35
+ # denying outright -- both still bounded to the scope and still subject to the destructive/
36
+ # redirection denylist, which is never relaxed. See
37
+ # the Claude Agent SDK dispatcher's guardrail config (GuardConfig.setupScope).
38
+ - { name: setup_execution, locked: true, scope: "." }
39
+ required_capabilities:
40
+ - source_connect
41
+ - llm:strong
42
+ borrowed_actions: []
43
+
44
+ effect:
45
+ render_blocks: []
46
+ outcome:
47
+ kind: none
48
+
49
+ eval:
50
+ template_ref: eval/
51
+ metrics: [connect_success]
@@ -0,0 +1,23 @@
1
+ You onboard a NEW data source into a wren project. No wren project exists yet -- that is what this
2
+ step creates.
3
+
4
+ - Follow the `wren` CLI's onboarding skill: run `wren skills get onboarding` (if available) and
5
+ follow what it prints. For a SaaS/managed data source, prefer the `dlt-connector` skill/connector
6
+ instead of a bespoke script.
7
+ - Scaffold a new wren project for the requested data source under the current working directory,
8
+ using whichever project name and source type the user specified (ask a clarifying question first
9
+ if either is ambiguous -- do not guess a data source's connection shape).
10
+ - Credentials, absolutely:
11
+ - NEVER ask the user to paste a credential/secret value into this conversation.
12
+ - NEVER read, print, echo, or otherwise surface the *value* of any credential, token, password, or
13
+ connection secret, even if you can see one (e.g. in an existing file, an env var, or a command's
14
+ output). Redact it if it appears anywhere you must reference.
15
+ - Write ONLY an EMPTY `.env` template -- the credential keys the connector needs, each left blank
16
+ (e.g. `DB_PASSWORD=`) -- never a placeholder that looks like a real secret, never a filled-in
17
+ value.
18
+ - Once the `.env` template exists, STOP and hand off to the user: tell them exactly which file to
19
+ fill in and which keys it needs, then wait. Do not attempt to test the connection until they
20
+ confirm the file is filled in.
21
+ - Produce `connection_summary`: a short structured report of what was scaffolded (project name,
22
+ source type, the `.env` path and the keys it expects) and whether you are now waiting on the user
23
+ to fill in credentials. Your FINAL message must include this summary.
@@ -0,0 +1,8 @@
1
+ # Bound to a RAW source (raw/schema.json), not an existing wren project — at connect time no wren
2
+ # project exists yet (the precondition inversion this profile exists to handle, landing on the skill
3
+ # family — see profile.yml).
4
+ # Resolved relative to THIS Warble project's own root (genbi-setup/), i.e. this points at
5
+ # genbi-setup/raw/ (a deliberately empty placeholder, see raw/schema.json), never at whatever project
6
+ # the onboarding flow itself creates on disk at runtime.
7
+ kind: raw_source
8
+ project: raw
@@ -0,0 +1,140 @@
1
+ {
2
+ "components": [
3
+ {
4
+ "borrowed_actions": [],
5
+ "context_binding": {
6
+ "binding_mode": "runtime_selected",
7
+ "project": "raw"
8
+ },
9
+ "context_precondition": [],
10
+ "context_requirements": [
11
+ "no pre-existing wren project required -- this component scaffolds one from a new data source"
12
+ ],
13
+ "effect": {
14
+ "outcome": {
15
+ "kind": "none"
16
+ },
17
+ "render_blocks": []
18
+ },
19
+ "eval": {
20
+ "metrics": [
21
+ "connect_success"
22
+ ],
23
+ "template_ref": "eval/"
24
+ },
25
+ "eval_ref": "connect_source.eval",
26
+ "guardrails": [
27
+ {
28
+ "locked": true,
29
+ "name": "setup_execution",
30
+ "scope": "."
31
+ }
32
+ ],
33
+ "id": "connect_source",
34
+ "llm_calls": [
35
+ {
36
+ "conditional": false,
37
+ "consumes": [],
38
+ "name": "connect",
39
+ "produces": "connection_summary",
40
+ "prompt": "You onboard a NEW data source into a wren project. No wren project exists yet -- that is what this\nstep creates.\n\n- Follow the `wren` CLI's onboarding skill: run `wren skills get onboarding` (if available) and\n follow what it prints. For a SaaS/managed data source, prefer the `dlt-connector` skill/connector\n instead of a bespoke script.\n- Scaffold a new wren project for the requested data source under the current working directory,\n using whichever project name and source type the user specified (ask a clarifying question first\n if either is ambiguous -- do not guess a data source's connection shape).\n- Credentials, absolutely:\n - NEVER ask the user to paste a credential/secret value into this conversation.\n - NEVER read, print, echo, or otherwise surface the *value* of any credential, token, password, or\n connection secret, even if you can see one (e.g. in an existing file, an env var, or a command's\n output). Redact it if it appears anywhere you must reference.\n - Write ONLY an EMPTY `.env` template -- the credential keys the connector needs, each left blank\n (e.g. `DB_PASSWORD=`) -- never a placeholder that looks like a real secret, never a filled-in\n value.\n - Once the `.env` template exists, STOP and hand off to the user: tell them exactly which file to\n fill in and which keys it needs, then wait. Do not attempt to test the connection until they\n confirm the file is filled in.\n- Produce `connection_summary`: a short structured report of what was scaffolded (project name,\n source type, the `.env` path and the keys it expects) and whether you are now waiting on the user\n to fill in credentials. Your FINAL message must include this summary.",
41
+ "tier": "strong",
42
+ "when": null
43
+ }
44
+ ],
45
+ "params": [],
46
+ "precondition_result": {
47
+ "checks": [],
48
+ "status": "pass"
49
+ },
50
+ "prompt_fragment": "## connect\n\nYou onboard a NEW data source into a wren project. No wren project exists yet -- that is what this\nstep creates.\n\n- Follow the `wren` CLI's onboarding skill: run `wren skills get onboarding` (if available) and\n follow what it prints. For a SaaS/managed data source, prefer the `dlt-connector` skill/connector\n instead of a bespoke script.\n- Scaffold a new wren project for the requested data source under the current working directory,\n using whichever project name and source type the user specified (ask a clarifying question first\n if either is ambiguous -- do not guess a data source's connection shape).\n- Credentials, absolutely:\n - NEVER ask the user to paste a credential/secret value into this conversation.\n - NEVER read, print, echo, or otherwise surface the *value* of any credential, token, password, or\n connection secret, even if you can see one (e.g. in an existing file, an env var, or a command's\n output). Redact it if it appears anywhere you must reference.\n - Write ONLY an EMPTY `.env` template -- the credential keys the connector needs, each left blank\n (e.g. `DB_PASSWORD=`) -- never a placeholder that looks like a real secret, never a filled-in\n value.\n - Once the `.env` template exists, STOP and hand off to the user: tell them exactly which file to\n fill in and which keys it needs, then wait. Do not attempt to test the connection until they\n confirm the file is filled in.\n- Produce `connection_summary`: a short structured report of what was scaffolded (project name,\n source type, the `.env` path and the keys it expects) and whether you are now waiting on the user\n to fill in credentials. Your FINAL message must include this summary.",
51
+ "realization_kind": "skill",
52
+ "required_capabilities": [
53
+ "source_connect",
54
+ "llm:strong"
55
+ ],
56
+ "trigger": {
57
+ "kind": "one_shot"
58
+ },
59
+ "type": "analytical",
60
+ "verb": "connect_source"
61
+ },
62
+ {
63
+ "borrowed_actions": [],
64
+ "context_binding": {
65
+ "binding_mode": "runtime_selected",
66
+ "project": "raw"
67
+ },
68
+ "context_precondition": [],
69
+ "context_requirements": [
70
+ "a project connect_source has already scaffolded, with credentials filled in and connectable"
71
+ ],
72
+ "effect": {
73
+ "outcome": {
74
+ "kind": "none"
75
+ },
76
+ "render_blocks": []
77
+ },
78
+ "eval": {
79
+ "metrics": [
80
+ "build_success"
81
+ ],
82
+ "template_ref": "eval/"
83
+ },
84
+ "eval_ref": "build_context.eval",
85
+ "guardrails": [
86
+ {
87
+ "locked": true,
88
+ "name": "setup_execution",
89
+ "scope": "."
90
+ }
91
+ ],
92
+ "id": "build_context",
93
+ "llm_calls": [
94
+ {
95
+ "conditional": false,
96
+ "consumes": [],
97
+ "name": "build",
98
+ "produces": "context_summary",
99
+ "prompt": "You generate the semantic layer (MDL) for a wren project that connect_source already scaffolded and\nwhose credentials the user has already filled in.\n\n- Follow the `wren` CLI's MDL-generation skill: run the `generate-mdl` skill (if available) to\n introspect the connected source and draft models, then optionally the `enrich-context` skill to add\n business knowledge/descriptions on top. Do not hand-write MDL from scratch if a generation skill is\n available -- generate first, then refine.\n- Validate before building: run `wren context validate` and only proceed to `wren context build` once\n it reports clean. If validation fails, fix the reported issues and re-validate rather than forcing a\n build through errors.\n- Do not touch credential values at any point in this step -- if the connection fails, report the\n failure back to the user rather than editing the `.env` file's values yourself.\n- Produce `context_summary`: report how many models were generated, whether validation passed, and\n whether the build succeeded. Your FINAL message must include this summary.",
100
+ "tier": "strong",
101
+ "when": null
102
+ }
103
+ ],
104
+ "params": [],
105
+ "precondition_result": {
106
+ "checks": [],
107
+ "status": "pass"
108
+ },
109
+ "prompt_fragment": "## build\n\nYou generate the semantic layer (MDL) for a wren project that connect_source already scaffolded and\nwhose credentials the user has already filled in.\n\n- Follow the `wren` CLI's MDL-generation skill: run the `generate-mdl` skill (if available) to\n introspect the connected source and draft models, then optionally the `enrich-context` skill to add\n business knowledge/descriptions on top. Do not hand-write MDL from scratch if a generation skill is\n available -- generate first, then refine.\n- Validate before building: run `wren context validate` and only proceed to `wren context build` once\n it reports clean. If validation fails, fix the reported issues and re-validate rather than forcing a\n build through errors.\n- Do not touch credential values at any point in this step -- if the connection fails, report the\n failure back to the user rather than editing the `.env` file's values yourself.\n- Produce `context_summary`: report how many models were generated, whether validation passed, and\n whether the build succeeded. Your FINAL message must include this summary.",
110
+ "realization_kind": "skill",
111
+ "required_capabilities": [
112
+ "context_build",
113
+ "llm:strong"
114
+ ],
115
+ "trigger": {
116
+ "kind": "one_shot"
117
+ },
118
+ "type": "analytical",
119
+ "verb": "build_context"
120
+ }
121
+ ],
122
+ "config": {},
123
+ "context_binding": {
124
+ "binding_mode": "runtime_selected",
125
+ "project": "raw",
126
+ "resolved": {
127
+ "dimensions": [],
128
+ "lineage": {
129
+ "edges": 0,
130
+ "nodes": 0,
131
+ "resolvable": true
132
+ },
133
+ "metrics": [],
134
+ "models": [],
135
+ "time_dimensions": []
136
+ }
137
+ },
138
+ "profile": "genbi-setup",
139
+ "warble_ir_version": "0.6"
140
+ }
@@ -0,0 +1,18 @@
1
+ # genbi-setup — the agentic onboarding profile (Phase 1 of the setup flow). Connects a NEW data
2
+ # source and builds its semantic layer, where genbi-default's components all assume a wren project
3
+ # already exists. Both components are deliberately skill-realized with outcome.kind: none (NOT
4
+ # constitutive/gated-tool) -- the gated-apply lifecycle requires human_approval, which resolves
5
+ # `fail` on a headless target. Onboarding side effects instead run through guarded Bash (`wren`,
6
+ # connector CLIs) and scoped Write, under the `setup_execution` guardrail -- the 5th enforcement
7
+ # point, name-keyed like `read_only_execution` / `artifact_write` / `context_write_authz`.
8
+ #
9
+ # Bound to a RAW context (see context/binding.yml) since no wren project exists yet at connect time --
10
+ # there is no MDL diff to gate here, only onboarding actions.
11
+ profile: genbi-setup
12
+
13
+ context:
14
+ project: ./context/binding.yml
15
+
16
+ components:
17
+ - use: connect_source
18
+ - use: build_context
@@ -0,0 +1,5 @@
1
+ {
2
+ "source": "genbi_setup",
3
+ "description": "Deliberately empty placeholder raw schema. genbi-setup's context binds here (see ../context/binding.yml) only to clear the compiler's coarse is_parseable() floor (core/src/compile.rs), which runs before any per-component precondition regardless of whether a component declares one. At connect time there is no real source to introspect yet -- that introspection happens at RUNTIME, via the wren CLI, inside connect_source's own step. Both genbi-setup components deliberately omit context_precondition, so no predicate ever inspects this content; an empty tables array still parses (RawSchema tolerates it via #[serde(default)]) and is sufficient.",
4
+ "tables": []
5
+ }