Repository navigation
Expand file tree
/
Copy pathconfig.yml
More file actions
77 lines (73 loc) · 4.38 KB
/
Copy pathconfig.yml
File metadata and controls
77 lines (73 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# monid configuration — top-level sections per component.
#
# RULE: schema.* and compiler.* are CONTRACT — loaded override-free by
# shared/core/config.ts (which never touches Deno.env; test-guarded), because
# bundle bytes must be a pure function of repo content — EXCEPT any `logging:`
# subtree, which — like engine.* and scripts.* — is TOOLING and uses the
# @shared/app-config precedence (env > stage > general).
#
# There is no engine contract section by design: the engine's contract is
# ENGINE_VERSION (engine/deno.json) plus the hook ABI in code, never a YAML knob.
schema:
spec_version: "1.0.0" # doc FORMAT version (semver, like every version here)
json_schema_dialect: "2020-12" # the ONE versioned JSON-standard pick (zod + ajv agree)
fn_src_max_bytes: 32768 # lint bound for one fn's normalized source
# The two "since" facts live HERE because they describe the FORMAT/ABI,
# not compiler behavior. They are declared, not computed: each answers
# "what is the OLDEST engine that understands X?" — a historical fact set
# when a change ships (deriving from the current engine version would
# over-pin every doc to the newest engine).
# 0.0.3: `meta.notes` (add-meta-notes). The doc's `meta` is zEndpointMeta,
# a strictObject — an engine at 0.0.2 REJECTS a doc carrying the new key,
# so the floor moves even though the field is optional and additive.
# (0.0.2 itself bumped the ENGINE only: add-connector-pdl changed how
# `usage.credits` RESOLVES, not the shape of the doc it produces.)
# 0.3.0: an endpoint IDENTITY may carry a `{param}` placeholder segment
# (`firecrawl#crawl/{id}`), so a resource-style endpoint is named by the
# vendor's real path instead of an invented pin. zEndpointId/zEndpointPath
# are regexes an engine at 0.2.0 REJECTS, so the floor moves — the same
# condition as meta.notes at 0.0.3, with the same accepted consequence:
# every doc floors at 0.3.0, including those carrying no placeholder.
# Kept a single declared fact rather than a per-doc inference (the D4
# rule of add-meta-notes). A per-feature floor is available when a
# feature can ride the fn-api table (async_since does); an IDENTITY is
# not a fn, so a per-doc floor for it would need its own compiler branch
# — not worth it with no consumer yet.
doc_format_since: "0.3.0" # oldest engine understanding the doc format (minEngineVersion floor)
# Pre-release: the whole contract (hook ctx {data, utils, logger},
# structured run state, UPPERCASE run kinds, usage.model + usage.estimate,
# zero-default utils.http / full-capability utils.request, the
# same-origin credential rule) ships UNRELEASED as 0.0.1 — versions stay
# at the pre-release floor until a first real release mints 0.1.0.
# 0.1.0: the wire query became a MULTIMAP (`Record<string, string[]>`)
# on zHttpRequestParts — a SHAPE change, not a widening, since a fn
# constructing `query: {k: "v"}` would now be wrong. Nothing in-tree
# does (auth fns spread data.request through), so no connector moved,
# but the stamp says what happened.
fn_abi_since: "0.1.0" # engine release of the current hook ABI; stamped as fn entries' `api`
# 0.1.0 with fn_abi_since: the lifecycle family's OWN surface moved too
# — zHttpCall.queryParams now takes a scalar or a list, normalized by
# the engine, so a lifecycle fn passing a list needs 0.1.0.
# 0.2.0 adds RESPONSE HEADERS to HttpResult — the return of utils.http /
# utils.request, which only the LIFECYCLE family holds. So this bump is
# alone here, NOT on fn_abi_since: a pure-hook doc gained no capability
# and must not be floored at a newer engine.
async_since: "0.2.0" # engine release of the lifecycle (async) hook family; stamped as lifecycle fn entries' `api`
state_max_bytes: 65536 # hard engine cap on serialized lifecycle state (ids + billing signals, never payloads)
compiler:
doc_size_warn_bytes: 65536
doc_size_fail_bytes: 262144
defaults:
request_timeout_ms: 30000
run_timeout_ms: 60000
poll_interval_ms: 2000
logging:
level: "info"
engine:
logging:
level: "info"
# Settings for the repo's own command scripts (compile / run / catalog / record).
scripts:
output_dir: ".output" # gitignored compile cache; catalog.json is the release artifact
logging:
level: "info"