@synap-core/workspace-templates 0.7.2 → 0.7.4

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 (44) hide show
  1. package/dist/index.d.ts +207 -8
  2. package/dist/index.js +2122 -1427
  3. package/dist/index.js.map +1 -1
  4. package/package.json +1 -1
  5. package/src/agent-fleet.yaml +666 -108
  6. package/src/blockchain-ecosystem.yaml +1 -0
  7. package/src/brand-library.yaml +127 -12
  8. package/src/builder.yaml +116 -12
  9. package/src/business-developer.yaml +102 -18
  10. package/src/catalog.ts +13 -3
  11. package/src/communication.yaml +23 -453
  12. package/src/composition-graph.test.ts +26 -0
  13. package/src/content-os.yaml +103 -10
  14. package/src/content-studio.yaml +1 -0
  15. package/src/crm.yaml +12 -0
  16. package/src/define.ts +8 -8
  17. package/src/dev-dashboard.yaml +43 -9
  18. package/src/domains.test.ts +117 -0
  19. package/src/domains.ts +102 -0
  20. package/src/ecosystem.yaml +21 -4
  21. package/src/enterprise-os.yaml +5 -0
  22. package/src/finance.yaml +46 -5
  23. package/src/foundation.yaml +13 -1
  24. package/src/grants.yaml +1 -0
  25. package/src/hr.yaml +61 -8
  26. package/src/index.ts +29 -0
  27. package/src/internal-runbook.yaml +36 -5
  28. package/src/legal.yaml +97 -12
  29. package/src/life-os.yaml +188 -27
  30. package/src/marketing.yaml +15 -2
  31. package/src/meetings-knowledge.yaml +7 -1
  32. package/src/operations.yaml +351 -0
  33. package/src/outreach-comms.yaml +6 -1
  34. package/src/project-management.yaml +840 -111
  35. package/src/research-base.yaml +516 -0
  36. package/src/research-decision.yaml +158 -0
  37. package/src/shared-role-ssot.test.ts +268 -0
  38. package/src/social.yaml +105 -37
  39. package/src/templates.ts +4573 -4302
  40. package/src/the-arch.yaml +11 -0
  41. package/src/types.ts +9 -0
  42. package/src/validate.test.ts +81 -0
  43. package/src/validate.ts +561 -0
  44. package/src/personal.yaml +0 -177
package/src/finance.yaml CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
  meta:
7
7
  slug: finance
8
+ domain: company
8
9
  name: Finance
9
10
  description: The company's money model — accounts, receivables, spend, revenue streams, budgets, and runway.
10
11
  icon: banknote
@@ -123,7 +124,17 @@ profiles:
123
124
  label: Category
124
125
  valueType: string
125
126
  inputType: select
126
- enumValues: [payroll, software, marketing, rent, travel, contractors, taxes, other]
127
+ enumValues:
128
+ [
129
+ payroll,
130
+ software,
131
+ marketing,
132
+ rent,
133
+ travel,
134
+ contractors,
135
+ taxes,
136
+ other,
137
+ ]
127
138
  constraints: { defaultValue: other }
128
139
  - slug: status
129
140
  label: Status
@@ -245,7 +256,18 @@ profiles:
245
256
  label: Metric
246
257
  valueType: string
247
258
  inputType: select
248
- enumValues: [runway, burn-rate, mrr, arr, cash-balance, gross-margin, cac, ltv, other]
259
+ enumValues:
260
+ [
261
+ runway,
262
+ burn-rate,
263
+ mrr,
264
+ arr,
265
+ cash-balance,
266
+ gross-margin,
267
+ cac,
268
+ ltv,
269
+ other,
270
+ ]
249
271
  constraints: { defaultValue: runway }
250
272
  - slug: value
251
273
  label: Value
@@ -292,7 +314,8 @@ views:
292
314
  defaultView: true
293
315
  description: Accounts receivable — who owes us, how much, and when it's due.
294
316
  config:
295
- columns: [title, invoice-number, status, amount, customer, due-date, paid-date]
317
+ columns:
318
+ [title, invoice-number, status, amount, customer, due-date, paid-date]
296
319
  defaultSort:
297
320
  field: due-date
298
321
  direction: asc
@@ -311,7 +334,16 @@ views:
311
334
  scopeProfileSlug: revenue-stream
312
335
  description: Revenue streams with MRR/ARR and billing cadence.
313
336
  config:
314
- columns: [title, stream-type, status, mrr, arr, billing-cadence, customer-segment]
337
+ columns:
338
+ [
339
+ title,
340
+ stream-type,
341
+ status,
342
+ mrr,
343
+ arr,
344
+ billing-cadence,
345
+ customer-segment,
346
+ ]
315
347
  defaultSort:
316
348
  field: mrr
317
349
  direction: desc
@@ -321,7 +353,16 @@ views:
321
353
  scopeProfileSlug: budget
322
354
  description: Planned spend against actuals, by category and period.
323
355
  config:
324
- columns: [title, category, period, fiscal-year, budgeted-amount, actual-amount, status]
356
+ columns:
357
+ [
358
+ title,
359
+ category,
360
+ period,
361
+ fiscal-year,
362
+ budgeted-amount,
363
+ actual-amount,
364
+ status,
365
+ ]
325
366
  - name: Runway & Metrics
326
367
  slug: runway-metrics
327
368
  type: table
@@ -6,6 +6,7 @@
6
6
 
7
7
  meta:
8
8
  slug: foundation
9
+ domain: strategy
9
10
  name: Foundation
10
11
  description: The strategic DNA — mission, audience, positioning, and principles — that every workspace inherits.
11
12
  icon: compass
@@ -455,7 +456,18 @@ views:
455
456
  - name: Strategy Map
456
457
  slug: strategy-map
457
458
  type: graph
458
- scopeProfileSlugs: [mission, vision, value, audience, pain-point, positioning, narrative, differentiator, non-goal]
459
+ scopeProfileSlugs:
460
+ [
461
+ mission,
462
+ vision,
463
+ value,
464
+ audience,
465
+ pain-point,
466
+ positioning,
467
+ narrative,
468
+ differentiator,
469
+ non-goal,
470
+ ]
459
471
  description: The strategic DNA as a connected graph.
460
472
 
461
473
  # Schema-level relations — give the Strategy Map and the relation picker
package/src/grants.yaml CHANGED
@@ -12,6 +12,7 @@
12
12
 
13
13
  meta:
14
14
  slug: grants
15
+ domain: revenue
15
16
  name: Grants Pipeline
16
17
  description: "Grant-agency operations — submissions, rounds, analyses. Overlays the Operations workspace."
17
18
  icon: award
package/src/hr.yaml CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  meta:
8
8
  slug: hr
9
+ domain: company
9
10
  name: HR
10
11
  description: The people operating system — team, hiring, performance reviews, and policies in one place.
11
12
  icon: users-round
@@ -56,7 +57,18 @@ profiles:
56
57
  label: Department
57
58
  valueType: string
58
59
  inputType: select
59
- enumValues: [Engineering, Product, Design, Sales, Marketing, Operations, People, Finance, Other]
60
+ enumValues:
61
+ [
62
+ Engineering,
63
+ Product,
64
+ Design,
65
+ Sales,
66
+ Marketing,
67
+ Operations,
68
+ People,
69
+ Finance,
70
+ Other,
71
+ ]
60
72
  - slug: employment-type
61
73
  label: Employment Type
62
74
  valueType: string
@@ -89,13 +101,25 @@ profiles:
89
101
  label: Status
90
102
  valueType: string
91
103
  inputType: select
92
- enumValues: [draft, open, interviewing, offer-out, filled, on-hold, closed]
104
+ enumValues:
105
+ [draft, open, interviewing, offer-out, filled, on-hold, closed]
93
106
  constraints: { defaultValue: open }
94
107
  - slug: department
95
108
  label: Department
96
109
  valueType: string
97
110
  inputType: select
98
- enumValues: [Engineering, Product, Design, Sales, Marketing, Operations, People, Finance, Other]
111
+ enumValues:
112
+ [
113
+ Engineering,
114
+ Product,
115
+ Design,
116
+ Sales,
117
+ Marketing,
118
+ Operations,
119
+ People,
120
+ Finance,
121
+ Other,
122
+ ]
99
123
  - slug: seniority
100
124
  label: Seniority
101
125
  valueType: string
@@ -134,7 +158,8 @@ profiles:
134
158
  label: Stage
135
159
  valueType: string
136
160
  inputType: select
137
- enumValues: [applied, screening, interview, offer, hired, rejected, withdrawn]
161
+ enumValues:
162
+ [applied, screening, interview, offer, hired, rejected, withdrawn]
138
163
  constraints: { defaultValue: applied }
139
164
  - slug: source
140
165
  label: Source
@@ -180,7 +205,15 @@ profiles:
180
205
  label: Status
181
206
  valueType: string
182
207
  inputType: select
183
- enumValues: [not-started, self-review, manager-review, calibration, shared, complete]
208
+ enumValues:
209
+ [
210
+ not-started,
211
+ self-review,
212
+ manager-review,
213
+ calibration,
214
+ shared,
215
+ complete,
216
+ ]
184
217
  constraints: { defaultValue: not-started }
185
218
  - slug: rating
186
219
  label: Rating
@@ -206,7 +239,17 @@ profiles:
206
239
  label: Category
207
240
  valueType: string
208
241
  inputType: select
209
- enumValues: [leave, benefits, conduct, remote-work, expenses, security, compensation, other]
242
+ enumValues:
243
+ [
244
+ leave,
245
+ benefits,
246
+ conduct,
247
+ remote-work,
248
+ expenses,
249
+ security,
250
+ compensation,
251
+ other,
252
+ ]
210
253
  - slug: status
211
254
  label: Status
212
255
  valueType: string
@@ -260,7 +303,16 @@ views:
260
303
  defaultView: true
261
304
  description: Everyone on the team, by role and status.
262
305
  config:
263
- columns: [title, role-title, department, status, employment-type, start-date, location]
306
+ columns:
307
+ [
308
+ title,
309
+ role-title,
310
+ department,
311
+ status,
312
+ employment-type,
313
+ start-date,
314
+ location,
315
+ ]
264
316
  - name: Hiring Pipeline
265
317
  slug: hiring-pipeline
266
318
  type: kanban
@@ -276,7 +328,8 @@ views:
276
328
  scopeProfileSlug: role
277
329
  description: Positions and their hiring status.
278
330
  config:
279
- columns: [title, status, department, seniority, hiring-manager, target-start]
331
+ columns:
332
+ [title, status, department, seniority, hiring-manager, target-start]
280
333
  - name: Reviews
281
334
  slug: reviews
282
335
  type: kanban
package/src/index.ts CHANGED
@@ -109,6 +109,35 @@ export {
109
109
  } from "./concept-guard.js";
110
110
  export type { ConceptViolation } from "./concept-guard.js";
111
111
 
112
+ export {
113
+ TEMPLATE_DOMAINS,
114
+ OTHER_DOMAIN_ID,
115
+ OTHER_DOMAIN_LABEL,
116
+ isKnownDomain,
117
+ domainLabel,
118
+ groupByDomain,
119
+ } from "./domains.js";
120
+ export type { TemplateDomain, DomainGroup } from "./domains.js";
121
+
122
+ // The ONE importable per-template validator — extracted from build.mjs /
123
+ // check-converters.mjs so the CLI, the CP, and the pod all call the SAME rules
124
+ // (required fields, referential integrity against own ∪ SYSTEM_PROFILES ∪
125
+ // dependency-vocab, overlay safety, entityLink type, and — when the compiled
126
+ // converters are injected — bento union split + capabilities parity).
127
+ export {
128
+ validateTemplate,
129
+ collectBaseProfileSlugs,
130
+ SYSTEM_PROFILES,
131
+ REQUIRED_META_FIELDS,
132
+ REQUIRED_WORKSPACE_FIELDS,
133
+ } from "./validate.js";
134
+ export type {
135
+ ValidationError,
136
+ ValidateResult,
137
+ ValidateOptions,
138
+ TemplateConverters,
139
+ } from "./validate.js";
140
+
112
141
  export {
113
142
  toWorkspaceDefinition,
114
143
  toPackageDefinition,
@@ -7,6 +7,7 @@
7
7
 
8
8
  meta:
9
9
  slug: internal-runbook
10
+ domain: company
10
11
  name: Internal Runbook
11
12
  description: The company's operating system — SOPs, workflows, vendors, tools, metrics, and rituals that keep the business running.
12
13
  icon: settings-2
@@ -17,7 +18,12 @@ meta:
17
18
  workspace:
18
19
  name: Internal Runbook
19
20
  description: The operating layer of the company — documented procedures, recurring processes, the tool stack and vendors behind them, operational metrics, and the rituals that keep the team aligned.
20
- proposalId: operations-v1
21
+ # No explicit proposalId: it derives to `internal-runbook-v1` (define.ts:
22
+ # `<slug>-v1`). A hand-authored `operations-v1` here previously COLLIDED with
23
+ # the `operations` template's derived id, so installing this via the
24
+ # app-hook/tRPC idempotency-on-proposalId path returned the Operations
25
+ # workspace instead. This is a standalone workspace (no `compose` on
26
+ # operations), so it must own its own identity.
21
27
  subtype: internal-runbook
22
28
  visibility: members
23
29
  workspaceType: operational
@@ -40,7 +46,18 @@ profiles:
40
46
  label: Category
41
47
  valueType: string
42
48
  inputType: select
43
- enumValues: [Onboarding, Finance, People, IT, Support, Sales, Legal, Facilities, Other]
49
+ enumValues:
50
+ [
51
+ Onboarding,
52
+ Finance,
53
+ People,
54
+ IT,
55
+ Support,
56
+ Sales,
57
+ Legal,
58
+ Facilities,
59
+ Other,
60
+ ]
44
61
  - slug: sop-status
45
62
  label: Status
46
63
  valueType: string
@@ -162,7 +179,19 @@ profiles:
162
179
  label: Category
163
180
  valueType: string
164
181
  inputType: select
165
- enumValues: [Productivity, Comms, Finance, Sales, Marketing, Dev, Design, Data, HR, Other]
182
+ enumValues:
183
+ [
184
+ Productivity,
185
+ Comms,
186
+ Finance,
187
+ Sales,
188
+ Marketing,
189
+ Dev,
190
+ Design,
191
+ Data,
192
+ HR,
193
+ Other,
194
+ ]
166
195
  - slug: tool-status
167
196
  label: Status
168
197
  valueType: string
@@ -291,7 +320,8 @@ views:
291
320
  scopeProfileSlug: vendor
292
321
  description: Suppliers and service providers, with cost, owner, and renewal.
293
322
  config:
294
- visibleColumns: [vendor-category, vendor-status, owner, monthly-cost, renewal-date]
323
+ visibleColumns:
324
+ [vendor-category, vendor-status, owner, monthly-cost, renewal-date]
295
325
  defaultSort: { field: monthly-cost, direction: desc }
296
326
  - name: Tool Stack
297
327
  slug: tool-stack
@@ -307,7 +337,8 @@ views:
307
337
  scopeProfileSlug: process-metric
308
338
  description: Operational SLAs and KPIs against target.
309
339
  config:
310
- visibleColumns: [metric-type, metric-status, target, current, cadence, owner]
340
+ visibleColumns:
341
+ [metric-type, metric-status, target, current, cadence, owner]
311
342
  - name: Rituals
312
343
  slug: rituals
313
344
  type: calendar
package/src/legal.yaml CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  meta:
8
8
  slug: legal
9
+ domain: company
9
10
  name: Legal
10
11
  description: The company's legal operating system — contracts, compliance, IP, entities, and matters.
11
12
  icon: scale
@@ -38,7 +39,8 @@ profiles:
38
39
  label: Entity Type
39
40
  valueType: string
40
41
  inputType: select
41
- enumValues: [c-corp, s-corp, llc, ltd, gmbh, sas, subsidiary, branch, other]
42
+ enumValues:
43
+ [c-corp, s-corp, llc, ltd, gmbh, sas, subsidiary, branch, other]
42
44
  - slug: jurisdiction
43
45
  label: Jurisdiction
44
46
  valueType: string
@@ -77,12 +79,25 @@ profiles:
77
79
  label: Type
78
80
  valueType: string
79
81
  inputType: select
80
- enumValues: [nda, msa, saas-subscription, employment, contractor, lease, partnership, financing, dpa, other]
82
+ enumValues:
83
+ [
84
+ nda,
85
+ msa,
86
+ saas-subscription,
87
+ employment,
88
+ contractor,
89
+ lease,
90
+ partnership,
91
+ financing,
92
+ dpa,
93
+ other,
94
+ ]
81
95
  - slug: status
82
96
  label: Status
83
97
  valueType: string
84
98
  inputType: select
85
- enumValues: [draft, in-review, negotiation, signed, active, expired, terminated]
99
+ enumValues:
100
+ [draft, in-review, negotiation, signed, active, expired, terminated]
86
101
  constraints: { defaultValue: draft }
87
102
  - slug: counterparty
88
103
  label: Counterparty
@@ -129,7 +144,17 @@ profiles:
129
144
  label: Obligation Type
130
145
  valueType: string
131
146
  inputType: select
132
- enumValues: [regulatory-filing, tax, data-privacy, license, certification, corporate-governance, employment, other]
147
+ enumValues:
148
+ [
149
+ regulatory-filing,
150
+ tax,
151
+ data-privacy,
152
+ license,
153
+ certification,
154
+ corporate-governance,
155
+ employment,
156
+ other,
157
+ ]
133
158
  - slug: status
134
159
  label: Status
135
160
  valueType: string
@@ -174,7 +199,8 @@ profiles:
174
199
  label: Status
175
200
  valueType: string
176
201
  inputType: select
177
- enumValues: [idea, filed, pending, registered, granted, abandoned, expired]
202
+ enumValues:
203
+ [idea, filed, pending, registered, granted, abandoned, expired]
178
204
  constraints: { defaultValue: idea }
179
205
  - slug: jurisdiction
180
206
  label: Jurisdiction
@@ -211,7 +237,17 @@ profiles:
211
237
  label: Area
212
238
  valueType: string
213
239
  inputType: select
214
- enumValues: [privacy, security, hr, code-of-conduct, data-retention, finance, acceptable-use, other]
240
+ enumValues:
241
+ [
242
+ privacy,
243
+ security,
244
+ hr,
245
+ code-of-conduct,
246
+ data-retention,
247
+ finance,
248
+ acceptable-use,
249
+ other,
250
+ ]
215
251
  - slug: status
216
252
  label: Status
217
253
  valueType: string
@@ -250,7 +286,18 @@ profiles:
250
286
  label: Type
251
287
  valueType: string
252
288
  inputType: select
253
- enumValues: [litigation, dispute, investigation, employment, ip-enforcement, regulatory, m-and-a, financing, other]
289
+ enumValues:
290
+ [
291
+ litigation,
292
+ dispute,
293
+ investigation,
294
+ employment,
295
+ ip-enforcement,
296
+ regulatory,
297
+ m-and-a,
298
+ financing,
299
+ other,
300
+ ]
254
301
  - slug: status
255
302
  label: Status
256
303
  valueType: string
@@ -296,7 +343,17 @@ views:
296
343
  description: Every agreement, its counterparty, status, and term.
297
344
  defaultView: true
298
345
  config:
299
- columns: [title, contractType, status, counterparty, effectiveDate, expirationDate, value, owner]
346
+ columns:
347
+ [
348
+ title,
349
+ contractType,
350
+ status,
351
+ counterparty,
352
+ effectiveDate,
353
+ expirationDate,
354
+ value,
355
+ owner,
356
+ ]
300
357
  - name: Renewals
301
358
  slug: renewals
302
359
  type: kanban
@@ -305,7 +362,8 @@ views:
305
362
  description: Contracts by lifecycle stage — catch renewals and expirations before they bite.
306
363
  config:
307
364
  groupBy: status
308
- cardFields: [counterparty, renewalType, renewalDate, expirationDate, value]
365
+ cardFields:
366
+ [counterparty, renewalType, renewalDate, expirationDate, value]
309
367
  - name: Compliance
310
368
  slug: compliance
311
369
  type: kanban
@@ -321,21 +379,48 @@ views:
321
379
  scopeProfileSlug: ip-asset
322
380
  description: Trademarks, patents, copyrights, and trade secrets the company owns.
323
381
  config:
324
- columns: [title, assetType, status, jurisdiction, registrationNumber, renewalDate, owner]
382
+ columns:
383
+ [
384
+ title,
385
+ assetType,
386
+ status,
387
+ jurisdiction,
388
+ registrationNumber,
389
+ renewalDate,
390
+ owner,
391
+ ]
325
392
  - name: Matters
326
393
  slug: matters
327
394
  type: table
328
395
  scopeProfileSlug: legal-matter
329
396
  description: Disputes, investigations, and transactions in flight.
330
397
  config:
331
- columns: [title, matterType, status, priority, counterparty, counsel, targetResolution, exposure]
398
+ columns:
399
+ [
400
+ title,
401
+ matterType,
402
+ status,
403
+ priority,
404
+ counterparty,
405
+ counsel,
406
+ targetResolution,
407
+ exposure,
408
+ ]
332
409
  - name: Legal Entities
333
410
  slug: legal-entities
334
411
  type: table
335
412
  scopeProfileSlug: legal-entity
336
413
  description: The corporate structure — entities, jurisdictions, and status.
337
414
  config:
338
- columns: [title, entityType, jurisdiction, registrationNumber, status, incorporationDate]
415
+ columns:
416
+ [
417
+ title,
418
+ entityType,
419
+ jurisdiction,
420
+ registrationNumber,
421
+ status,
422
+ incorporationDate,
423
+ ]
339
424
 
340
425
  # Schema-level relations — give the relation picker domain-specific links from day one.
341
426
  entityLinks: