@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.
- package/README.md +63 -0
- package/dist/codegen/docs-cli.d.ts +3 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +16 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +3 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate-lexicon.d.ts +24 -0
- package/dist/codegen/generate-lexicon.d.ts.map +1 -0
- package/dist/codegen/generate-typescript.d.ts +11 -0
- package/dist/codegen/generate-typescript.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +15 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/naming.d.ts +14 -0
- package/dist/codegen/naming.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +17 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/composites/concierge-stack.d.ts +44 -0
- package/dist/composites/concierge-stack.d.ts.map +1 -0
- package/dist/coverage.d.ts +56 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +45 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/detect.d.ts +10 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/entity-props.d.ts +11 -0
- package/dist/entity-props.d.ts.map +1 -0
- package/dist/export-resources.d.ts +29 -0
- package/dist/export-resources.d.ts.map +1 -0
- package/dist/generated/index.d.ts +5 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/runtime.d.ts +5 -0
- package/dist/generated/runtime.d.ts.map +1 -0
- package/dist/import/generator.d.ts +15 -0
- package/dist/import/generator.d.ts.map +1 -0
- package/dist/import/parser.d.ts +19 -0
- package/dist/import/parser.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/init-templates.d.ts +13 -0
- package/dist/init-templates.d.ts.map +1 -0
- package/dist/integrity.json +21 -0
- package/dist/lint/audit-catalog.d.ts +15 -0
- package/dist/lint/audit-catalog.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn010-networking-explicit.d.ts +11 -0
- package/dist/lint/post-synth/ftn010-networking-explicit.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn011-no-unrestricted-networking.d.ts +11 -0
- package/dist/lint/post-synth/ftn011-no-unrestricted-networking.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn012-no-cloud-credential-env.d.ts +3 -0
- package/dist/lint/post-synth/ftn012-no-cloud-credential-env.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn013-substitution-resolvable.d.ts +3 -0
- package/dist/lint/post-synth/ftn013-substitution-resolvable.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn014-vault-shadowing.d.ts +3 -0
- package/dist/lint/post-synth/ftn014-vault-shadowing.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn015-mcp-secret-env-substitution.d.ts +3 -0
- package/dist/lint/post-synth/ftn015-mcp-secret-env-substitution.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn016-runtime-model-valid.d.ts +3 -0
- package/dist/lint/post-synth/ftn016-runtime-model-valid.d.ts.map +1 -0
- package/dist/lint/post-synth/ftn017-unique-resource-names.d.ts +11 -0
- package/dist/lint/post-synth/ftn017-unique-resource-names.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts +3 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -0
- package/dist/lint/rules/ftn001-no-secret-literals.d.ts +3 -0
- package/dist/lint/rules/ftn001-no-secret-literals.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +5 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +7 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +4 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/manifest.json +6 -0
- package/dist/meta.json +69 -0
- package/dist/op/activities/fountain-apply.d.ts +76 -0
- package/dist/op/activities/fountain-apply.d.ts.map +1 -0
- package/dist/op/activities/fountain-run.d.ts +36 -0
- package/dist/op/activities/fountain-run.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +11 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/package-cli.d.ts +3 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/plugin.d.ts +8 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/reference-catalog.d.ts +16 -0
- package/dist/reference-catalog.d.ts.map +1 -0
- package/dist/rules/ftn001-no-secret-literals.ts +71 -0
- package/dist/rules/ftn010-networking-explicit.ts +37 -0
- package/dist/rules/ftn011-no-unrestricted-networking.ts +36 -0
- package/dist/rules/ftn012-no-cloud-credential-env.ts +58 -0
- package/dist/rules/ftn013-substitution-resolvable.ts +93 -0
- package/dist/rules/ftn014-vault-shadowing.ts +61 -0
- package/dist/rules/ftn015-mcp-secret-env-substitution.ts +49 -0
- package/dist/rules/ftn016-runtime-model-valid.ts +50 -0
- package/dist/rules/ftn017-unique-resource-names.ts +43 -0
- package/dist/serializer.d.ts +3 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/skills/chant-fountain-locked-sandboxes.md +34 -0
- package/dist/skills/chant-fountain-secrets.md +29 -0
- package/dist/skills/chant-fountain.md +45 -0
- package/dist/spec/fetch.d.ts +28 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/parse.d.ts +58 -0
- package/dist/spec/parse.d.ts.map +1 -0
- package/dist/types/index.d.ts +60 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/package.json +61 -0
- package/src/codegen/docs-cli.ts +7 -0
- package/src/codegen/docs.ts +278 -0
- package/src/codegen/generate-cli.ts +8 -0
- package/src/codegen/generate-lexicon.ts +58 -0
- package/src/codegen/generate-typescript.ts +69 -0
- package/src/codegen/generate.ts +109 -0
- package/src/codegen/naming.ts +45 -0
- package/src/codegen/package.ts +32 -0
- package/src/composites/composites.test.ts +35 -0
- package/src/composites/concierge-stack.ts +71 -0
- package/src/coverage.test.ts +63 -0
- package/src/coverage.ts +178 -0
- package/src/describe-resources.test.ts +203 -0
- package/src/describe-resources.ts +192 -0
- package/src/detect.ts +37 -0
- package/src/entity-props.ts +22 -0
- package/src/export-resources.ts +103 -0
- package/src/generated/.gitkeep +0 -0
- package/src/generated/index.d.ts +60 -0
- package/src/generated/index.ts +10 -0
- package/src/generated/lexicon-fountain.json +69 -0
- package/src/generated/runtime.ts +4 -0
- package/src/import/generator.ts +112 -0
- package/src/import/parser.ts +83 -0
- package/src/import/roundtrip.test.ts +113 -0
- package/src/index.ts +17 -0
- package/src/init-templates.ts +60 -0
- package/src/lint/audit-catalog.ts +107 -0
- package/src/lint/post-synth/ftn010-networking-explicit.ts +37 -0
- package/src/lint/post-synth/ftn011-no-unrestricted-networking.ts +36 -0
- package/src/lint/post-synth/ftn012-no-cloud-credential-env.ts +58 -0
- package/src/lint/post-synth/ftn013-substitution-resolvable.ts +93 -0
- package/src/lint/post-synth/ftn014-vault-shadowing.ts +61 -0
- package/src/lint/post-synth/ftn015-mcp-secret-env-substitution.ts +49 -0
- package/src/lint/post-synth/ftn016-runtime-model-valid.ts +50 -0
- package/src/lint/post-synth/ftn017-unique-resource-names.ts +43 -0
- package/src/lint/post-synth/index.ts +21 -0
- package/src/lint/post-synth/post-synth.test.ts +133 -0
- package/src/lint/rules/ftn001-no-secret-literals.ts +71 -0
- package/src/lint/rules/index.ts +7 -0
- package/src/lint/rules/rules.test.ts +126 -0
- package/src/lsp/completions.test.ts +51 -0
- package/src/lsp/completions.ts +21 -0
- package/src/lsp/hover.test.ts +47 -0
- package/src/lsp/hover.ts +70 -0
- package/src/op/activities/fountain-apply.test.ts +208 -0
- package/src/op/activities/fountain-apply.ts +249 -0
- package/src/op/activities/fountain-run.ts +95 -0
- package/src/op/activities/index.ts +28 -0
- package/src/package-cli.ts +26 -0
- package/src/plugin.test.ts +73 -0
- package/src/plugin.ts +170 -0
- package/src/reference-catalog.ts +27 -0
- package/src/serializer.test.ts +109 -0
- package/src/serializer.ts +143 -0
- package/src/skills/chant-fountain-locked-sandboxes.md +34 -0
- package/src/skills/chant-fountain-secrets.md +29 -0
- package/src/skills/chant-fountain.md +45 -0
- package/src/spec/fetch.ts +53 -0
- package/src/spec/fountain-openapi.snapshot.json +1 -0
- package/src/spec/parse.ts +309 -0
- package/src/validate-cli.ts +13 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/detect.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|