@intentius/chant-lexicon-fountain 0.33.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.
Files changed (171) hide show
  1. package/README.md +63 -0
  2. package/dist/codegen/docs-cli.d.ts +3 -0
  3. package/dist/codegen/docs-cli.d.ts.map +1 -0
  4. package/dist/codegen/docs.d.ts +16 -0
  5. package/dist/codegen/docs.d.ts.map +1 -0
  6. package/dist/codegen/generate-cli.d.ts +3 -0
  7. package/dist/codegen/generate-cli.d.ts.map +1 -0
  8. package/dist/codegen/generate-lexicon.d.ts +24 -0
  9. package/dist/codegen/generate-lexicon.d.ts.map +1 -0
  10. package/dist/codegen/generate-typescript.d.ts +11 -0
  11. package/dist/codegen/generate-typescript.d.ts.map +1 -0
  12. package/dist/codegen/generate.d.ts +15 -0
  13. package/dist/codegen/generate.d.ts.map +1 -0
  14. package/dist/codegen/naming.d.ts +14 -0
  15. package/dist/codegen/naming.d.ts.map +1 -0
  16. package/dist/codegen/package.d.ts +17 -0
  17. package/dist/codegen/package.d.ts.map +1 -0
  18. package/dist/composites/concierge-stack.d.ts +44 -0
  19. package/dist/composites/concierge-stack.d.ts.map +1 -0
  20. package/dist/coverage.d.ts +56 -0
  21. package/dist/coverage.d.ts.map +1 -0
  22. package/dist/describe-resources.d.ts +45 -0
  23. package/dist/describe-resources.d.ts.map +1 -0
  24. package/dist/detect.d.ts +10 -0
  25. package/dist/detect.d.ts.map +1 -0
  26. package/dist/entity-props.d.ts +11 -0
  27. package/dist/entity-props.d.ts.map +1 -0
  28. package/dist/export-resources.d.ts +29 -0
  29. package/dist/export-resources.d.ts.map +1 -0
  30. package/dist/generated/index.d.ts +5 -0
  31. package/dist/generated/index.d.ts.map +1 -0
  32. package/dist/generated/runtime.d.ts +5 -0
  33. package/dist/generated/runtime.d.ts.map +1 -0
  34. package/dist/import/generator.d.ts +15 -0
  35. package/dist/import/generator.d.ts.map +1 -0
  36. package/dist/import/parser.d.ts +19 -0
  37. package/dist/import/parser.d.ts.map +1 -0
  38. package/dist/index.d.ts +8 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/init-templates.d.ts +13 -0
  41. package/dist/init-templates.d.ts.map +1 -0
  42. package/dist/integrity.json +21 -0
  43. package/dist/lint/audit-catalog.d.ts +15 -0
  44. package/dist/lint/audit-catalog.d.ts.map +1 -0
  45. package/dist/lint/post-synth/ftn010-networking-explicit.d.ts +11 -0
  46. package/dist/lint/post-synth/ftn010-networking-explicit.d.ts.map +1 -0
  47. package/dist/lint/post-synth/ftn011-no-unrestricted-networking.d.ts +11 -0
  48. package/dist/lint/post-synth/ftn011-no-unrestricted-networking.d.ts.map +1 -0
  49. package/dist/lint/post-synth/ftn012-no-cloud-credential-env.d.ts +3 -0
  50. package/dist/lint/post-synth/ftn012-no-cloud-credential-env.d.ts.map +1 -0
  51. package/dist/lint/post-synth/ftn013-substitution-resolvable.d.ts +3 -0
  52. package/dist/lint/post-synth/ftn013-substitution-resolvable.d.ts.map +1 -0
  53. package/dist/lint/post-synth/ftn014-vault-shadowing.d.ts +3 -0
  54. package/dist/lint/post-synth/ftn014-vault-shadowing.d.ts.map +1 -0
  55. package/dist/lint/post-synth/ftn015-mcp-secret-env-substitution.d.ts +3 -0
  56. package/dist/lint/post-synth/ftn015-mcp-secret-env-substitution.d.ts.map +1 -0
  57. package/dist/lint/post-synth/ftn016-runtime-model-valid.d.ts +3 -0
  58. package/dist/lint/post-synth/ftn016-runtime-model-valid.d.ts.map +1 -0
  59. package/dist/lint/post-synth/ftn017-unique-resource-names.d.ts +11 -0
  60. package/dist/lint/post-synth/ftn017-unique-resource-names.d.ts.map +1 -0
  61. package/dist/lint/post-synth/index.d.ts +3 -0
  62. package/dist/lint/post-synth/index.d.ts.map +1 -0
  63. package/dist/lint/rules/ftn001-no-secret-literals.d.ts +3 -0
  64. package/dist/lint/rules/ftn001-no-secret-literals.d.ts.map +1 -0
  65. package/dist/lint/rules/index.d.ts +5 -0
  66. package/dist/lint/rules/index.d.ts.map +1 -0
  67. package/dist/lsp/completions.d.ts +7 -0
  68. package/dist/lsp/completions.d.ts.map +1 -0
  69. package/dist/lsp/hover.d.ts +4 -0
  70. package/dist/lsp/hover.d.ts.map +1 -0
  71. package/dist/manifest.json +6 -0
  72. package/dist/meta.json +69 -0
  73. package/dist/op/activities/fountain-apply.d.ts +76 -0
  74. package/dist/op/activities/fountain-apply.d.ts.map +1 -0
  75. package/dist/op/activities/fountain-run.d.ts +36 -0
  76. package/dist/op/activities/fountain-run.d.ts.map +1 -0
  77. package/dist/op/activities/index.d.ts +11 -0
  78. package/dist/op/activities/index.d.ts.map +1 -0
  79. package/dist/package-cli.d.ts +3 -0
  80. package/dist/package-cli.d.ts.map +1 -0
  81. package/dist/plugin.d.ts +8 -0
  82. package/dist/plugin.d.ts.map +1 -0
  83. package/dist/reference-catalog.d.ts +16 -0
  84. package/dist/reference-catalog.d.ts.map +1 -0
  85. package/dist/rules/ftn001-no-secret-literals.ts +71 -0
  86. package/dist/rules/ftn010-networking-explicit.ts +37 -0
  87. package/dist/rules/ftn011-no-unrestricted-networking.ts +36 -0
  88. package/dist/rules/ftn012-no-cloud-credential-env.ts +58 -0
  89. package/dist/rules/ftn013-substitution-resolvable.ts +93 -0
  90. package/dist/rules/ftn014-vault-shadowing.ts +61 -0
  91. package/dist/rules/ftn015-mcp-secret-env-substitution.ts +49 -0
  92. package/dist/rules/ftn016-runtime-model-valid.ts +50 -0
  93. package/dist/rules/ftn017-unique-resource-names.ts +43 -0
  94. package/dist/serializer.d.ts +3 -0
  95. package/dist/serializer.d.ts.map +1 -0
  96. package/dist/skills/chant-fountain-locked-sandboxes.md +34 -0
  97. package/dist/skills/chant-fountain-secrets.md +29 -0
  98. package/dist/skills/chant-fountain.md +45 -0
  99. package/dist/spec/fetch.d.ts +28 -0
  100. package/dist/spec/fetch.d.ts.map +1 -0
  101. package/dist/spec/parse.d.ts +58 -0
  102. package/dist/spec/parse.d.ts.map +1 -0
  103. package/dist/types/index.d.ts +60 -0
  104. package/dist/validate-cli.d.ts +3 -0
  105. package/dist/validate-cli.d.ts.map +1 -0
  106. package/dist/validate.d.ts +15 -0
  107. package/dist/validate.d.ts.map +1 -0
  108. package/package.json +61 -0
  109. package/src/codegen/docs-cli.ts +7 -0
  110. package/src/codegen/docs.ts +278 -0
  111. package/src/codegen/generate-cli.ts +8 -0
  112. package/src/codegen/generate-lexicon.ts +58 -0
  113. package/src/codegen/generate-typescript.ts +69 -0
  114. package/src/codegen/generate.ts +109 -0
  115. package/src/codegen/naming.ts +45 -0
  116. package/src/codegen/package.ts +32 -0
  117. package/src/composites/composites.test.ts +35 -0
  118. package/src/composites/concierge-stack.ts +71 -0
  119. package/src/coverage.test.ts +63 -0
  120. package/src/coverage.ts +178 -0
  121. package/src/describe-resources.test.ts +203 -0
  122. package/src/describe-resources.ts +192 -0
  123. package/src/detect.ts +37 -0
  124. package/src/entity-props.ts +22 -0
  125. package/src/export-resources.ts +103 -0
  126. package/src/generated/.gitkeep +0 -0
  127. package/src/generated/index.d.ts +60 -0
  128. package/src/generated/index.ts +10 -0
  129. package/src/generated/lexicon-fountain.json +69 -0
  130. package/src/generated/runtime.ts +4 -0
  131. package/src/import/generator.ts +112 -0
  132. package/src/import/parser.ts +83 -0
  133. package/src/import/roundtrip.test.ts +113 -0
  134. package/src/index.ts +17 -0
  135. package/src/init-templates.ts +60 -0
  136. package/src/lint/audit-catalog.ts +107 -0
  137. package/src/lint/post-synth/ftn010-networking-explicit.ts +37 -0
  138. package/src/lint/post-synth/ftn011-no-unrestricted-networking.ts +36 -0
  139. package/src/lint/post-synth/ftn012-no-cloud-credential-env.ts +58 -0
  140. package/src/lint/post-synth/ftn013-substitution-resolvable.ts +93 -0
  141. package/src/lint/post-synth/ftn014-vault-shadowing.ts +61 -0
  142. package/src/lint/post-synth/ftn015-mcp-secret-env-substitution.ts +49 -0
  143. package/src/lint/post-synth/ftn016-runtime-model-valid.ts +50 -0
  144. package/src/lint/post-synth/ftn017-unique-resource-names.ts +43 -0
  145. package/src/lint/post-synth/index.ts +21 -0
  146. package/src/lint/post-synth/post-synth.test.ts +133 -0
  147. package/src/lint/rules/ftn001-no-secret-literals.ts +71 -0
  148. package/src/lint/rules/index.ts +7 -0
  149. package/src/lint/rules/rules.test.ts +126 -0
  150. package/src/lsp/completions.test.ts +51 -0
  151. package/src/lsp/completions.ts +21 -0
  152. package/src/lsp/hover.test.ts +47 -0
  153. package/src/lsp/hover.ts +70 -0
  154. package/src/op/activities/fountain-apply.test.ts +208 -0
  155. package/src/op/activities/fountain-apply.ts +249 -0
  156. package/src/op/activities/fountain-run.ts +95 -0
  157. package/src/op/activities/index.ts +28 -0
  158. package/src/package-cli.ts +26 -0
  159. package/src/plugin.test.ts +73 -0
  160. package/src/plugin.ts +170 -0
  161. package/src/reference-catalog.ts +27 -0
  162. package/src/serializer.test.ts +109 -0
  163. package/src/serializer.ts +143 -0
  164. package/src/skills/chant-fountain-locked-sandboxes.md +34 -0
  165. package/src/skills/chant-fountain-secrets.md +29 -0
  166. package/src/skills/chant-fountain.md +45 -0
  167. package/src/spec/fetch.ts +53 -0
  168. package/src/spec/fountain-openapi.snapshot.json +1 -0
  169. package/src/spec/parse.ts +309 -0
  170. package/src/validate-cli.ts +13 -0
  171. package/src/validate.ts +34 -0
package/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # @intentius/chant-lexicon-fountain
2
+
3
+ fountain lexicon plugin for [chant](https://github.com/intentius/chant).
4
+
5
+ [fountain](https://github.com/BinaryBourbon/fountain) runs coding agents in
6
+ sandboxed VMs. This lexicon declares its workload layer as typed chant
7
+ resources: `Environment` (sandbox baseline), `Vault` (env-var overrides),
8
+ `Agent` (a runnable agent config). Conversations are runs, not resources —
9
+ start them with the `fountainRun` op.
10
+
11
+ `chant build` serializes to fountain's own manifest YAML (`fountain apply -f`
12
+ accepts it verbatim) plus a `fountain-plan.json` sidecar that `fountainApply`
13
+ reconciles against the API directly.
14
+
15
+ ```ts
16
+ import { Environment, Agent } from "@intentius/chant-lexicon-fountain";
17
+
18
+ export const env = new Environment({
19
+ name: "team-env",
20
+ networking_type: "limited", // FTN010 requires explicit intent
21
+ networking_config: { allowed_hosts: ["github.com"] },
22
+ metadata: { "managed-by": "chant" }, // enables owned-only reconcile/prune
23
+ });
24
+
25
+ export const helper = new Agent({
26
+ name: "helper",
27
+ model: "anthropic/claude-sonnet-4-6",
28
+ runtime: "claude",
29
+ environment: env, // typed ref — dangling name = build error
30
+ });
31
+ ```
32
+
33
+ For agents handling anything sensitive, `ConciergeStack` bundles the
34
+ locked-down defaults (deny-all egress, no vault overrides, ownership marker
35
+ on both resources) so loosening any of them is a visible, reviewable
36
+ parameter.
37
+
38
+ ## Development
39
+
40
+ ```bash
41
+ just generate # regenerate types from the upstream OpenAPI spec
42
+ just validate # check the generated artifacts
43
+ just docs # build and serve the docs site
44
+ ```
45
+
46
+ The spec is a rolling endpoint with no release tag to pin, so generation
47
+ falls back to a committed snapshot (`src/spec/fountain-openapi.snapshot.json`)
48
+ when the live endpoint is unreachable. `chant dev coverage` compares the
49
+ generated surface against that spec and reports properties upstream has
50
+ added, plus the request schemas deliberately left unmodeled.
51
+
52
+ ## Project structure
53
+
54
+ - `src/plugin.ts` — LexiconPlugin with all lifecycle methods
55
+ - `src/serializer.ts` — manifest YAML + `fountain-plan.json` output
56
+ - `src/codegen/`, `src/spec/` — generation pipeline and spec fetch/parse
57
+ - `src/lint/rules/`, `src/lint/post-synth/` — FTN001 (AST) and FTN010–017
58
+ - `src/op/activities/` — `fountainApply` (reconciler) and `fountainRun`
59
+ - `src/composites/` — `ConciergeStack`
60
+ - `src/skills/` — agent skills for authoring, secrets, and locked sandboxes
61
+ - `src/import/`, `src/describe-resources.ts` — adoption and live observation
62
+ - `src/lsp/` — completions and hover
63
+ - `src/generated/` — generated artifacts (do not edit)
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=docs-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-cli.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * fountain documentation generator.
3
+ *
4
+ * Calls the core docsPipeline with fountain-specific config. The reference
5
+ * pages (resources, composites, ops, adoption, skills) are declared as
6
+ * `extraPages` rather than left as hand-written files in docs/: the sidebar is
7
+ * rebuilt from generated pages on every run, so a page the config does not
8
+ * know about exists but cannot be navigated to.
9
+ */
10
+ /**
11
+ * Generate documentation site for the fountain lexicon.
12
+ */
13
+ export declare function generateDocs(options?: {
14
+ verbose?: boolean;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/codegen/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiNH;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjF"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=generate-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-cli.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Lexicon JSON generator — produces lexicon-fountain.json with metadata for the
3
+ * fly resource and property types.
4
+ */
5
+ import type { PropertyConstraints } from "@intentius/chant/codegen/json-schema";
6
+ import type { FountainParseResult } from "../spec/parse.js";
7
+ import type { NamingStrategy } from "./naming.js";
8
+ export interface FountainLexiconEntry {
9
+ resourceType: string;
10
+ kind: "resource" | "property";
11
+ lexicon: "fountain";
12
+ /**
13
+ * Per-property constraints. Named to match core's `LexiconEntry`
14
+ * contract (and the aws/azure peers) — core reserves bare `constraints`
15
+ * for the extension-constraint array, and the LSP providers read
16
+ * property names off this key.
17
+ */
18
+ propertyConstraints?: Record<string, PropertyConstraints>;
19
+ }
20
+ /**
21
+ * Generate the lexicon-fountain.json content.
22
+ */
23
+ export declare function generateLexiconJSON(results: FountainParseResult[], naming: NamingStrategy): string;
24
+ //# sourceMappingURL=generate-lexicon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-lexicon.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-lexicon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CA8BlG"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * TypeScript declaration file generator — produces index.d.ts with the fly
3
+ * resource classes (App, Machine, Volume) and their property-type classes.
4
+ */
5
+ import type { FountainParseResult } from "../spec/parse.js";
6
+ import type { NamingStrategy } from "./naming.js";
7
+ /**
8
+ * Generate the complete .d.ts file content.
9
+ */
10
+ export declare function generateTypeScriptDeclarations(results: FountainParseResult[], naming: NamingStrategy): string;
11
+ //# sourceMappingURL=generate-typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-typescript.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-typescript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAe/C;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CA4C7G"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fountain generation pipeline — uses core generatePipeline with
3
+ * fountain-specific fetch, parse, naming, and generation callbacks.
4
+ */
5
+ import { type GenerateOptions, type GenerateResult } from "@intentius/chant/codegen/generate";
6
+ export type { GenerateResult };
7
+ /**
8
+ * Run the full fountain generation pipeline.
9
+ */
10
+ export declare function generate(opts?: GenerateOptions): Promise<GenerateResult>;
11
+ /**
12
+ * Write generated artifacts to disk.
13
+ */
14
+ export declare function writeGeneratedFiles(result: GenerateResult, pkgDir?: string): void;
15
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,mCAAmC,CAAC;AAc3C,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAoClF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAWjF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Fountain naming strategy — maps Fountain::V1::{Kind} type names to
3
+ * user-friendly TypeScript class names.
4
+ */
5
+ import { NamingStrategy as CoreNamingStrategy } from "@intentius/chant/codegen/naming";
6
+ import { type FountainParseResult } from "../spec/parse.js";
7
+ export { propertyTypeName, extractDefName } from "@intentius/chant/codegen/naming";
8
+ /**
9
+ * Fountain-specific naming strategy. Extends the core strategy with the fountain config.
10
+ */
11
+ export declare class NamingStrategy extends CoreNamingStrategy {
12
+ constructor(results: FountainParseResult[]);
13
+ }
14
+ //# sourceMappingURL=naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/codegen/naming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,IAAI,kBAAkB,EAGrC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAA0C,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAqBnF;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;gBACxC,OAAO,EAAE,mBAAmB,EAAE;CAO3C"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Package the fountain lexicon for distribution.
3
+ */
4
+ export declare function packageLexicon(options?: {
5
+ verbose?: boolean;
6
+ force?: boolean;
7
+ }): Promise<{
8
+ spec: import("packages/core/src").BundleSpec;
9
+ stats: {
10
+ resources: number;
11
+ properties: number;
12
+ enums: number;
13
+ ruleCount: number;
14
+ skillCount: number;
15
+ };
16
+ }>;
17
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/codegen/package.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;GAqBpF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * ConciergeStack — a locked-down Environment + Agent pair with the
3
+ * secure-by-construction defaults for agents that touch anything
4
+ * sensitive:
5
+ *
6
+ * - `networking_type: limited` with an explicit allowlist (empty =
7
+ * deny-all egress — fountain's isolation mode)
8
+ * - `allowed_vault_ids: []` — no conversation may override the
9
+ * reviewed environment at spawn
10
+ * - the `managed-by: chant` marker on both, so owned-only
11
+ * reconcile/prune and drift filtering see them
12
+ *
13
+ * Loosening any of it is a visible, reviewable act: pass an allowlist,
14
+ * pass vault ids, or drop to the raw classes.
15
+ */
16
+ import { Environment, Agent } from "../generated/index.js";
17
+ export interface ConciergeStackOpts {
18
+ /** Base name; the environment is `<name>-env`, the agent `<name>`. */
19
+ name: string;
20
+ /** Canonical provider/model_id. */
21
+ model: string;
22
+ /** Agent runtime. Default "claude". */
23
+ runtime?: "claude" | "codex" | "gemini" | "opencode";
24
+ /** Egress allowlist. Default [] — deny all egress. */
25
+ allowedHosts?: string[];
26
+ /** Vaults that may attach at conversation create. Default [] — none. */
27
+ allowedVaultIds?: string[];
28
+ /** Skill installs. Pin github-sourced entries with `ref`. */
29
+ skills?: Array<Record<string, unknown>>;
30
+ /** MCP server definitions (use ${VAR} references for secrets). */
31
+ mcpServers?: Record<string, unknown>;
32
+ /** System prompt. */
33
+ system?: string;
34
+ /** Extra environment fields (packages, env_vars, setup_script, repositories). */
35
+ environment?: Record<string, unknown>;
36
+ /** Extra metadata merged over the managed-by marker. */
37
+ metadata?: Record<string, unknown>;
38
+ }
39
+ export interface ConciergeStackResources {
40
+ environment: InstanceType<typeof Environment>;
41
+ agent: InstanceType<typeof Agent>;
42
+ }
43
+ export declare function ConciergeStack(opts: ConciergeStackOpts): ConciergeStackResources;
44
+ //# sourceMappingURL=concierge-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concierge-stack.d.ts","sourceRoot":"","sources":["../../src/composites/concierge-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACrD,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC9C,KAAK,EAAE,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,uBAAuB,CAwBhF"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Coverage analysis for the fountain lexicon.
3
+ *
4
+ * The shared `computeCoverage` measures CloudFormation-shaped dimensions
5
+ * (lifecycle flags, return attributes, extension constraints) that a
6
+ * three-kind OpenAPI lexicon has no analog for — it would report 0% on
7
+ * everything and mean nothing. What fountain actually needs to know is
8
+ * whether its generated surface still matches upstream, because the spec
9
+ * is a rolling endpoint with no release tag to pin (see spec/fetch.ts):
10
+ *
11
+ * 1. Property coverage — request-schema properties per modeled kind vs
12
+ * what the committed surface baseline exposes. A gap means upstream
13
+ * added a field and `just generate` has not been rerun.
14
+ * 2. Kind coverage — which request-shaped schemas are modeled as
15
+ * declarables, and which are deliberately not (with the reason), so
16
+ * an unmodeled kind is a decision on record rather than an omission.
17
+ */
18
+ /** Request schemas with no typed resource, and why. */
19
+ export declare const EXCLUDED_KINDS: Record<string, string>;
20
+ export interface KindCoverage {
21
+ kind: string;
22
+ specProps: number;
23
+ modeledProps: number;
24
+ /** In the upstream request schema, absent from the generated surface. */
25
+ missing: string[];
26
+ /** In the generated surface, absent from the upstream request schema. */
27
+ stale: string[];
28
+ }
29
+ export interface FountainCoverageReport {
30
+ kinds: KindCoverage[];
31
+ /** Request schemas modeled as declarables. */
32
+ modeledKinds: string[];
33
+ /** Request schemas deliberately not modeled → reason. */
34
+ excludedKinds: Record<string, string>;
35
+ /** Request schemas neither modeled nor on the exclusion list. */
36
+ unaccountedKinds: string[];
37
+ /** Modeled properties as a percentage of upstream request properties. */
38
+ overallPct: number;
39
+ }
40
+ interface SurfaceSnapshot {
41
+ entries: Record<string, {
42
+ kind: string;
43
+ props?: string[];
44
+ }>;
45
+ }
46
+ export declare function computeFountainCoverage(specJSON: string | Buffer, surface: SurfaceSnapshot): FountainCoverageReport;
47
+ export declare function formatSummary(report: FountainCoverageReport): string;
48
+ export declare function formatVerbose(report: FountainCoverageReport): string;
49
+ /** Run coverage analysis for the fountain lexicon. */
50
+ export declare function analyzeFountainCoverage(opts?: {
51
+ basePath?: string;
52
+ verbose?: boolean;
53
+ minOverall?: number;
54
+ }): Promise<FountainCoverageReport>;
55
+ export {};
56
+ //# sourceMappingURL=coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,uDAAuD;AACvD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7D;AAOD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,EAAE,eAAe,GACvB,sBAAsB,CAiDxB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAGpE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CA0BpE;AAED,sDAAsD;AACtD,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAsBlC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Live introspection of fountain resources — the read-back seam for chant's
3
+ * plan/drift machinery.
4
+ *
5
+ * Drives core's observer harness (`observeEntities`, #1201) rather than
6
+ * re-deriving its control flow: bind-or-not-observe-all with a typed reason,
7
+ * per-entity tri-state routing, and a read throw degrading to `read-failed`
8
+ * rather than a silent absence that would classify as a spurious `create`.
9
+ * What this lexicon supplies is the adapter — the transport and the per-entity
10
+ * read.
11
+ *
12
+ * The read is a lookup, not a fetch: fountain has no per-resource-by-name
13
+ * endpoint, so the adapter lists each declared kind once
14
+ * (GET /api/environments|vaults|agents) and indexes it by name. The list
15
+ * promise is cached per kind, so concurrent reads share one request and a
16
+ * failed list marks only that kind's entities read-failed.
17
+ *
18
+ * Ownership comes from the `managed-by: chant` metadata marker (fountain#137
19
+ * gave all three kinds the channel). Endpoint + auth reuse the applier
20
+ * verbatim (FOUNTAIN_ENDPOINT / FOUNTAIN_TOKEN), so plan reads the same
21
+ * instance fountainApply writes. Secret *values* never appear anywhere on
22
+ * this path — the API is write-only for values; the secrets sub-resource is
23
+ * not read here at all.
24
+ */
25
+ import type { ObservationResult } from "@intentius/chant/lexicon";
26
+ import { type FountainHttp } from "./op/activities/fountain-apply.js";
27
+ export interface DescribeResourcesOptions {
28
+ environment: string;
29
+ buildOutput: string;
30
+ entityNames: string[];
31
+ entities: Map<string, {
32
+ entityType: string;
33
+ props: Record<string, unknown>;
34
+ }>;
35
+ /** Restrict to chant-owned resources. */
36
+ owned?: boolean;
37
+ /** Endpoint override (tests). Defaults to resolveEndpoint(). */
38
+ endpoint?: string;
39
+ }
40
+ /**
41
+ * `http` is injectable for tests; the default reuses the applier's fetch
42
+ * client (bearer token from FOUNTAIN_TOKEN).
43
+ */
44
+ export declare function describeResources(options: DescribeResourcesOptions, http?: FountainHttp): Promise<ObservationResult>;
45
+ //# sourceMappingURL=describe-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-resources.d.ts","sourceRoot":"","sources":["../src/describe-resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAOpF,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAWxC,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC9E,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqHD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAQ5B"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Detection helpers — is this input a fountain artifact?
3
+ */
4
+ /** A fountain manifest document (parsed): apiVersion fountain.dev/v1 + known kind. */
5
+ export declare function isFountainManifest(doc: unknown): boolean;
6
+ /** The serializer's fountain-plan.json shape: entity name → { kind, spec }. */
7
+ export declare function isFountainPlan(data: unknown): boolean;
8
+ /** Template detection for the plugin: raw string input (YAML or JSON). */
9
+ export declare function detectFountainTemplate(data: unknown): boolean;
10
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAIxD;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CASrD;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAU7D"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Read an entity's authored props regardless of representation.
3
+ *
4
+ * Real runtime instances (createResource/createProperty) keep authored
5
+ * props under the non-enumerable `.props` — enumerating the instance
6
+ * yields its AttrRefs, not its inputs. Plain objects (parsed data, test
7
+ * fixtures) carry props as own fields. Every fountain consumer of entity
8
+ * props goes through here so both shapes behave identically.
9
+ */
10
+ export declare function propsOf(entity: unknown): Record<string, unknown>;
11
+ //# sourceMappingURL=entity-props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-props.d.ts","sourceRoot":"","sources":["../src/entity-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYhE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Live export — read fountain resources back as import IR for
3
+ * `chant import --from`. The adoption path: an org with UI-built
4
+ * environments/vaults/agents gets typed leaf files.
5
+ *
6
+ * Server-written fields are stripped to the authored shape; an agent's
7
+ * `environment_id` is resolved back to the exported environment's logical
8
+ * name so the generated code carries a reviewable reference. Secret
9
+ * *values* never leave fountain (write-only upstream) and secret *keys*
10
+ * cannot round-trip into typed code yet — the request schema has no
11
+ * secrets field (they are a sub-resource; fountain#148's reference model
12
+ * would change this) — so environments export without their secrets and
13
+ * the caller is warned per environment that carries any.
14
+ */
15
+ import type { ExportedTemplate, ResourceSelector } from "@intentius/chant/lexicon";
16
+ import { type FountainHttp } from "./op/activities/fountain-apply.js";
17
+ export interface ExportResourcesOptions {
18
+ environment: string;
19
+ selector?: ResourceSelector;
20
+ owned?: boolean;
21
+ verbatim?: boolean;
22
+ endpoint?: string;
23
+ /** Injectable for tests. */
24
+ http?: FountainHttp;
25
+ /** Warning sink (defaults to console.error). */
26
+ warn?: (msg: string) => void;
27
+ }
28
+ export declare function exportResources(options: ExportResourcesOptions): Promise<ExportedTemplate>;
29
+ //# sourceMappingURL=export-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-resources.d.ts","sourceRoot":"","sources":["../src/export-resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEnF,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AASxC,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,gDAAgD;IAChD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2DhG"}
@@ -0,0 +1,5 @@
1
+ export declare const Agent: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, string>;
2
+ export declare const Environment: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, string>;
3
+ export declare const Vault: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, string>;
4
+ export declare const Repository: new (props: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, unknown>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,+IAAuH,CAAC;AAC1I,eAAO,MAAM,WAAW,+IAA6H,CAAC;AACtJ,eAAO,MAAM,KAAK,+IAAuH,CAAC;AAE1I,eAAO,MAAM,UAAU,0GAAyD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Runtime factory constructors — re-exported from core.
3
+ */
4
+ export { createResource, createProperty } from "@intentius/chant/runtime";
5
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/generated/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fountain TypeScript generator.
3
+ *
4
+ * Converts import IR from {@link FountainParser} into typed chant
5
+ * TypeScript: `import { Environment, ... } from
6
+ * "@intentius/chant-lexicon-fountain";` plus one `export const` per
7
+ * resource. `repositories` entries are wrapped in `new Repository({...})`
8
+ * — the one nested property declarable on the fountain surface.
9
+ */
10
+ import type { TypeScriptGenerator, GeneratedFile } from "@intentius/chant/import/generator";
11
+ import type { TemplateIR } from "@intentius/chant/import/parser";
12
+ export declare class FountainGenerator implements TypeScriptGenerator {
13
+ generate(ir: TemplateIR): GeneratedFile[];
14
+ }
15
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/import/generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAUjE,qBAAa,iBAAkB,YAAW,mBAAmB;IAC3D,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,aAAa,EAAE;CAuB1C"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Fountain template parser.
3
+ *
4
+ * Turns fountain manifests (the `fountain apply -f` YAML, single or
5
+ * multi-document) or the serializer's fountain-plan.json into the import IR
6
+ * for conversion to chant TypeScript. Server-written read-only fields are
7
+ * dropped so the IR is the declared shape. `logicalId` is `metadata.name`
8
+ * (manifests) or the plan's entity name.
9
+ */
10
+ import type { TemplateParser, TemplateIR } from "@intentius/chant/import/parser";
11
+ import { BaseValueParser } from "@intentius/chant/import/base-parser";
12
+ /** Server-written read-only fields — never part of the authored shape. */
13
+ export declare const SERVER_FIELDS: string[];
14
+ export declare class FountainParser extends BaseValueParser implements TemplateParser {
15
+ protected dispatchIntrinsic(): unknown | null;
16
+ parse(input: string): TemplateIR;
17
+ private resource;
18
+ }
19
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/import/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAc,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAItE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,UAA4F,CAAC;AAYvH,qBAAa,cAAe,SAAQ,eAAgB,YAAW,cAAc;IAC3E,SAAS,CAAC,iBAAiB,IAAI,OAAO,GAAG,IAAI;IAM7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAsChC,OAAO,CAAC,QAAQ;CASjB"}
@@ -0,0 +1,8 @@
1
+ export { fountainPlugin } from "./plugin.js";
2
+ export { fountainSerializer } from "./serializer.js";
3
+ export * from "./generated/index.js";
4
+ export { fountainApply, fountainRun, DEFAULT_FOUNTAIN_BASE_URL } from "./op/activities/index.js";
5
+ export type { FountainApplyArgs, FountainApplySummary, FountainRunArgs, FountainRunResult } from "./op/activities/index.js";
6
+ export { ConciergeStack } from "./composites/concierge-stack.js";
7
+ export type { ConciergeStackOpts, ConciergeStackResources } from "./composites/concierge-stack.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACxF,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGnH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `chant init` scaffolding for fountain projects.
3
+ *
4
+ * Two templates. The default is the concierge posture — a locked sandbox
5
+ * declared through `ConciergeStack`, since an agent environment that reaches
6
+ * anything real should start closed and be opened by explicit parameter. The
7
+ * `open` template is the loose counterpart for a research sandbox that touches
8
+ * nothing sensitive, and says so in a comment rather than leaving a reader to
9
+ * infer that the difference was deliberate.
10
+ */
11
+ import type { InitTemplateSet } from "@intentius/chant/lexicon";
12
+ export declare function fountainInitTemplates(template?: string): InitTemplateSet;
13
+ //# sourceMappingURL=init-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-templates.d.ts","sourceRoot":"","sources":["../src/init-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA2ChE,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAKxE"}
@@ -0,0 +1,21 @@
1
+ {
2
+ "algorithm": "sha256",
3
+ "artifacts": {
4
+ "manifest.json": "757017e21fc2f8173e8da69305a7f4311ccd8830785f9e86c552e9991a5a804e",
5
+ "meta.json": "6666b7a77db9210a329219c6a5e107e5ae8794a34542f7310ce16d9bf95c64f5",
6
+ "types/index.d.ts": "1dfdcba184fffcf464dac7d1d71ef7abed2ae02a8d638c0de50e0b0317b7eb01",
7
+ "rules/ftn001-no-secret-literals.ts": "897a4ce1ec790b3c1540d32892603bd33ff4bf30eb6ba4cd2565dee356d4962e",
8
+ "rules/ftn010-networking-explicit.ts": "29d62025b456b207758a32d463b686e1acc5f1d39e36a6e8999946df26bbe1fc",
9
+ "rules/ftn011-no-unrestricted-networking.ts": "2bf44295dfa5825a7863e49514f75ea9a74fe2658869d908a50de3a287a398a8",
10
+ "rules/ftn012-no-cloud-credential-env.ts": "7eda629bd48b650d711205ebd75a70b358646e7168aac944771db4e40808ba60",
11
+ "rules/ftn013-substitution-resolvable.ts": "1425ca7de9494725ad4ec0bcb22abc30cff718d3fc3816fb86322897ebcaf451",
12
+ "rules/ftn014-vault-shadowing.ts": "e966a441c52f57fee059e3e4834da2c5f9d12c71e551924beebd7d0740f714e1",
13
+ "rules/ftn015-mcp-secret-env-substitution.ts": "88dc87c8f403a2fe48ee43bc4a4678d95273dba810135c8e74750f1bd62d2564",
14
+ "rules/ftn016-runtime-model-valid.ts": "b4aa86267a411678fe6a8ae3556fd9b34cf1c15aaecfe99790216d529a494f44",
15
+ "rules/ftn017-unique-resource-names.ts": "866f3f385083f96b6e8a18fa6f5624bab43752c5d22e7291e95835e62745d26c",
16
+ "skills/chant-fountain.md": "71c077dbeb40a95cb3a341d99a54eaefc321e07ba789c8b92574f385f9983f3f",
17
+ "skills/chant-fountain-secrets.md": "6b968e76ed135adde9e5970495beb752e4d9bcf7b02a2a9501fc18b58676d01e",
18
+ "skills/chant-fountain-locked-sandboxes.md": "de82f06cb3a08ba6bf3ae45fb9869e21d6da18b9ebe0fc769da8aebaceea7dd1"
19
+ },
20
+ "composite": "4e29aaf0b03c36a53922b819db6851256b3e5b15f1daa9016d14b96874285ccc"
21
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The fountain lexicon's chant audit catalog — metadata for the FTN rules,
3
+ * contributed via `fountainPlugin.auditCatalog()` (#687).
4
+ *
5
+ * Every entry carries `yamlBased: false`, which is not an oversight: all of
6
+ * fountain's checks read the chant model (`ctx.entities`), not the emitted
7
+ * manifests (`ctx.outputs`), because the facts they need — which Environment
8
+ * an Agent references, which keys a Vault shadows — live in the typed graph
9
+ * and are flattened by the time YAML exists. So they fire on `chant build`
10
+ * and cannot fire on an audit of standalone fountain YAML. `auditRule()`
11
+ * hardcodes `yamlBased: true`, so these are constructed directly.
12
+ */
13
+ import type { RuleMeta } from "@intentius/chant/audit/catalog";
14
+ export declare const fountainAuditCatalog: Record<string, RuleMeta>;
15
+ //# sourceMappingURL=audit-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAwB1E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAqEzD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
2
+ /**
3
+ * FTN010: Environments must state their networking intent.
4
+ *
5
+ * Fountain defaults `networking_type` to `unrestricted` when omitted —
6
+ * an open-network sandbox by silence. Every declared Environment must set
7
+ * `networking_type` explicitly so the security posture is a reviewed,
8
+ * diffable decision.
9
+ */
10
+ export declare const networkingExplicitCheck: PostSynthCheck;
11
+ //# sourceMappingURL=ftn010-networking-explicit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ftn010-networking-explicit.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/ftn010-networking-explicit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAyBrC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
2
+ /**
3
+ * FTN011: `unrestricted` networking is a warning by default.
4
+ *
5
+ * Fountain sandboxes run untrusted agent code; an open-network sandbox is
6
+ * a real posture some workloads need, but it should read as a deliberate
7
+ * exception in review. Projects hosting untrusted-agent environments
8
+ * (concierge-class) should promote this to error via project rules.
9
+ */
10
+ export declare const noUnrestrictedNetworkingCheck: PostSynthCheck;
11
+ //# sourceMappingURL=ftn011-no-unrestricted-networking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ftn011-no-unrestricted-networking.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/ftn011-no-unrestricted-networking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,kCAAkC,CAAC;AAG9G;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,EAAE,cAwB3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
2
+ export declare const noCloudCredentialEnvCheck: PostSynthCheck;
3
+ //# sourceMappingURL=ftn012-no-cloud-credential-env.d.ts.map