@voxgig/sdkgen-infrapack 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,120 @@
1
+ # Seneca provider target — a Seneca plugin that exposes this API's entities
2
+ # as Seneca entities (`provider/<name>/<entity>`), layered on the sibling
3
+ # `ts` SDK. It is not a language SDK in its own right, so every standard
4
+ # generation phase is switched off below and Main_seneca-provider emits the
5
+ # whole package, exactly as go-cli / go-mcp / py-data do.
6
+ #
7
+ # Requires the `ts` target in the same SDK project (Main throws when it is
8
+ # absent): the plugin imports the published TypeScript SDK.
9
+ #
10
+ # UNLIKE the other consumer targets, this one generates into ITS OWN REPO.
11
+ # A Seneca provider is an independently released npm package under the
12
+ # @seneca scope, with its own LICENSE, CI workflow and release cadence, and
13
+ # it depends on the SDK as an ordinary published dependency rather than by
14
+ # path. Point it at that repo from the PROJECT model:
15
+ #
16
+ # main: kit: target: 'seneca-provider': output: path: '../../seneca/seneca-acme-provider'
17
+ #
18
+ # Relative to the SDK repo root. Left unset here on purpose — every project's
19
+ # provider repo is somewhere different, and a concrete value here would
20
+ # CONFLICT with the project's rather than yield to it (see the publication
21
+ # note below). Unset means the ordinary in-tree `<sdk-repo>/seneca-provider/`,
22
+ # which is a usable default for a first look at the output.
23
+
24
+ main: kit: target: 'seneca-provider': {
25
+
26
+ title: 'Seneca Provider'
27
+ ext: ts
28
+ comment: line: "//"
29
+ module: name: '$$name$$'
30
+ base: 'BASE'
31
+ srcfeature: false
32
+
33
+ # Per-generation-phase activation. Mirrors py-data: every standard phase is
34
+ # off and Main emits the package. README, docs and tests ARE generated — by
35
+ # Main, not by the standard cmps, which assume an SDK-shaped package and
36
+ # would emit wrong content here.
37
+ phase: {
38
+ entity: { active: false }
39
+ feature: { active: false }
40
+ readme: { active: false }
41
+ agentguide: { active: false }
42
+ test: { active: false }
43
+ }
44
+
45
+ # `kind` is a COMMA-SEPARATED LIST of manifest sections, not a single one.
46
+ # collectDeps deduplicates by package name and this map is keyed by name, so
47
+ # a package belonging in two sections cannot be declared twice — it says so
48
+ # here instead. See `seneca` below for the case that forced it.
49
+ deps: &: {
50
+ kind: *'prod' | string
51
+ }
52
+
53
+ # The Seneca plugin contract. `@seneca/provider` supplies entityBuilder and
54
+ # the keymap message this plugin's `prepare` posts; the rest are the host
55
+ # framework a plugin runs inside and so are PEER deps — a plugin that
56
+ # bundled its own seneca would run against a different instance than the
57
+ # application it is loaded into.
58
+ #
59
+ # The ts SDK dependency is emitted by Main from the model's published
60
+ # package name, so it is not declared here.
61
+ deps: {
62
+ '@seneca/maintain': { active: true, version: '^0.1.0', kind: prod }
63
+
64
+ '@seneca/env': { active: true, version: '>=0.4', kind: peer }
65
+ '@seneca/provider': { active: true, version: '>=4', kind: peer }
66
+
67
+ # PEER *and* DEV. Peer for the reason above — the plugin must attach to
68
+ # the host application's seneca instance. Dev because the generated test
69
+ # suite does `require('seneca')` itself, so a clean `npm install && npm
70
+ # test` in a fresh checkout has to produce one. Relying on npm's automatic
71
+ # peer installation instead is what dropping this from the manifest
72
+ # amounted to, and that is npm-version- and client-specific: pnpm and
73
+ # `--legacy-peer-deps` both leave the suite with no seneca to require.
74
+ 'seneca': { active: true, version: '>=3||>=4.0.0-rc2', kind: 'peer,dev' }
75
+
76
+ 'seneca-entity': { active: true, version: '>=26', kind: peer }
77
+ 'seneca-promisify': { active: true, version: '>=3', kind: peer }
78
+
79
+ '@seneca/doc': { active: true, version: '^8.0.0', kind: dev }
80
+ '@types/node': { active: true, version: '^24.0.0', kind: dev }
81
+ 'seneca-msg-test': { active: true, version: '^4.1.0', kind: dev }
82
+ 'typescript': { active: true, version: '^5.4.5', kind: dev }
83
+ }
84
+ }
85
+
86
+
87
+ # Feature-deps map slot — every target carries this so the same feature can
88
+ # specify per-target dep variants.
89
+ main: kit: feature: &: target: 'seneca-provider': deps: &: {
90
+ kind: *'prod' | string
91
+ }
92
+
93
+
94
+ # Publication: npm registry, under the @seneca scope rather than the SDK's
95
+ # own. The package name is NOT derived from the SDK slug the way a language
96
+ # target's is — a provider is `@seneca/<name>-provider` — so Main sets it
97
+ # from the model and a project can pin it like any other.
98
+ #
99
+ # `target add <t>` OVERWRITES this file, so a project must never set its
100
+ # publication values here — voxgig-solardemo-sdk lost its pinned npm package
101
+ # name exactly that way. Set them in the project's own overlay
102
+ # (`model/project.aon`), which create-sdkgen creates once and never
103
+ # overwrites — NOT `model/sdk.aon`, which it rewrites on every scaffold.
104
+ #
105
+ # For that to work this file must LEAVE THOSE KEYS UNSET: in aontu a concrete
106
+ # value does not yield to another concrete value, it CONFLICTS, and two
107
+ # defaults conflict too. The schema (@voxgig/sdkgen/model/sdkgen.aon)
108
+ # already defaults `tag.active`, `registry.state`, `registry.active` and
109
+ # `registry.package`, so a project's concrete value wins over the default and
110
+ # repeating them here would only take that away.
111
+ #
112
+ # What remains below is per-target registry IDENTITY, which is not a project
113
+ # choice and stays concrete.
114
+ main: kit: target: 'seneca-provider': publish: {
115
+ registry: {
116
+ name: 'npm'
117
+ url: 'https://registry.npmjs.org'
118
+ vault: { recipe: 'npm', alias: 'npm' }
119
+ }
120
+ }