@synap-core/workspace-templates 0.2.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.
- package/dist/define.d.ts +97 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +91 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/templates.d.ts +7 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +23354 -0
- package/dist/types.d.ts +328 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/package.json +37 -0
- package/src/agent-fleet.yaml +1434 -0
- package/src/brand-library.yaml +627 -0
- package/src/builder.yaml +1355 -0
- package/src/content-os.yaml +1424 -0
- package/src/content-studio.yaml +312 -0
- package/src/crm.yaml +2606 -0
- package/src/define.ts +184 -0
- package/src/dev-dashboard.yaml +1309 -0
- package/src/foundation.yaml +343 -0
- package/src/index.ts +62 -0
- package/src/life-os.yaml +1443 -0
- package/src/marketing.yaml +244 -0
- package/src/personal.yaml +114 -0
- package/src/project-management.yaml +1119 -0
- package/src/radar.yaml +274 -0
- package/src/templates.ts +23363 -0
- package/src/types.ts +426 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# Foundation workspace template
|
|
2
|
+
# A company's STRATEGIC DNA — the outside-in layer every other workspace
|
|
3
|
+
# inherits. The conceptual replacement for the old single `north_star` entity:
|
|
4
|
+
# a north star is not one entity, it's this whole pack (mission, audience,
|
|
5
|
+
# positioning, principles). Pod-visible provider of the `strategy` domain.
|
|
6
|
+
|
|
7
|
+
meta:
|
|
8
|
+
slug: foundation
|
|
9
|
+
name: Foundation
|
|
10
|
+
description: The strategic DNA — mission, audience, positioning, and principles — that every workspace inherits.
|
|
11
|
+
icon: compass
|
|
12
|
+
color: "#4F46E5"
|
|
13
|
+
tags: [strategy, mission, positioning, audience]
|
|
14
|
+
isPublic: true
|
|
15
|
+
|
|
16
|
+
workspace:
|
|
17
|
+
name: Foundation
|
|
18
|
+
description: The company's strategic DNA — mission, vision, audiences, pains, positioning, and operating principles that downstream workspaces inherit.
|
|
19
|
+
proposalId: foundation-v1
|
|
20
|
+
subtype: foundation
|
|
21
|
+
visibility: pod_visible
|
|
22
|
+
capabilities:
|
|
23
|
+
- strategy.foundation
|
|
24
|
+
- strategy.context
|
|
25
|
+
sourceRoles:
|
|
26
|
+
strategy: provider
|
|
27
|
+
|
|
28
|
+
profiles:
|
|
29
|
+
- slug: mission
|
|
30
|
+
displayName: Mission
|
|
31
|
+
icon: target
|
|
32
|
+
color: indigo
|
|
33
|
+
description: "What we serve, what we change, and why now."
|
|
34
|
+
properties:
|
|
35
|
+
- slug: statement
|
|
36
|
+
label: Mission statement
|
|
37
|
+
valueType: string
|
|
38
|
+
inputType: textarea
|
|
39
|
+
constraints: { required: true }
|
|
40
|
+
- slug: time-horizon
|
|
41
|
+
label: Time horizon
|
|
42
|
+
valueType: string
|
|
43
|
+
inputType: text
|
|
44
|
+
placeholder: e.g. 3 years
|
|
45
|
+
- slug: status
|
|
46
|
+
label: Status
|
|
47
|
+
valueType: string
|
|
48
|
+
inputType: select
|
|
49
|
+
enumValues: [draft, active, archived]
|
|
50
|
+
constraints: { defaultValue: active }
|
|
51
|
+
|
|
52
|
+
- slug: vision
|
|
53
|
+
displayName: Vision
|
|
54
|
+
icon: telescope
|
|
55
|
+
color: violet
|
|
56
|
+
description: "The world as it looks when we win."
|
|
57
|
+
properties:
|
|
58
|
+
- slug: statement
|
|
59
|
+
label: Vision statement
|
|
60
|
+
valueType: string
|
|
61
|
+
inputType: textarea
|
|
62
|
+
- slug: status
|
|
63
|
+
label: Status
|
|
64
|
+
valueType: string
|
|
65
|
+
inputType: select
|
|
66
|
+
enumValues: [draft, active, archived]
|
|
67
|
+
constraints: { defaultValue: active }
|
|
68
|
+
|
|
69
|
+
- slug: value
|
|
70
|
+
displayName: Value
|
|
71
|
+
icon: heart-handshake
|
|
72
|
+
color: rose
|
|
73
|
+
description: "A core operating value — how we behave when it's hard."
|
|
74
|
+
properties:
|
|
75
|
+
- slug: principle
|
|
76
|
+
label: Principle
|
|
77
|
+
valueType: string
|
|
78
|
+
inputType: textarea
|
|
79
|
+
- slug: do
|
|
80
|
+
label: We do
|
|
81
|
+
valueType: string
|
|
82
|
+
inputType: textarea
|
|
83
|
+
- slug: dont
|
|
84
|
+
label: We don't
|
|
85
|
+
valueType: string
|
|
86
|
+
inputType: textarea
|
|
87
|
+
|
|
88
|
+
- slug: audience
|
|
89
|
+
displayName: Audience
|
|
90
|
+
icon: users
|
|
91
|
+
color: blue
|
|
92
|
+
description: "An ideal customer profile — who we are built for."
|
|
93
|
+
properties:
|
|
94
|
+
- slug: segment
|
|
95
|
+
label: Segment
|
|
96
|
+
valueType: string
|
|
97
|
+
inputType: text
|
|
98
|
+
- slug: persona
|
|
99
|
+
label: Persona
|
|
100
|
+
valueType: string
|
|
101
|
+
inputType: textarea
|
|
102
|
+
- slug: jobs-to-be-done
|
|
103
|
+
label: Jobs to be done
|
|
104
|
+
valueType: string
|
|
105
|
+
inputType: textarea
|
|
106
|
+
- slug: traits
|
|
107
|
+
label: Traits
|
|
108
|
+
valueType: array
|
|
109
|
+
inputType: text
|
|
110
|
+
|
|
111
|
+
- slug: pain-point
|
|
112
|
+
displayName: Pain Point
|
|
113
|
+
icon: flame
|
|
114
|
+
color: orange
|
|
115
|
+
description: "A specific pain a target audience feels today."
|
|
116
|
+
properties:
|
|
117
|
+
- slug: description
|
|
118
|
+
label: Description
|
|
119
|
+
valueType: string
|
|
120
|
+
inputType: textarea
|
|
121
|
+
- slug: severity
|
|
122
|
+
label: Severity
|
|
123
|
+
valueType: string
|
|
124
|
+
inputType: select
|
|
125
|
+
enumValues: [low, medium, high, critical]
|
|
126
|
+
constraints: { defaultValue: medium }
|
|
127
|
+
- slug: target-audience
|
|
128
|
+
label: Audience
|
|
129
|
+
valueType: entity_id
|
|
130
|
+
targetProfileSlug: audience
|
|
131
|
+
inputType: entity_select
|
|
132
|
+
- slug: evidence
|
|
133
|
+
label: Evidence
|
|
134
|
+
valueType: string
|
|
135
|
+
inputType: textarea
|
|
136
|
+
|
|
137
|
+
- slug: positioning
|
|
138
|
+
displayName: Positioning
|
|
139
|
+
icon: crosshair
|
|
140
|
+
color: cyan
|
|
141
|
+
description: "Market category, who we stand against, and why we win."
|
|
142
|
+
properties:
|
|
143
|
+
- slug: category
|
|
144
|
+
label: Category
|
|
145
|
+
valueType: string
|
|
146
|
+
inputType: text
|
|
147
|
+
- slug: against
|
|
148
|
+
label: Against
|
|
149
|
+
valueType: string
|
|
150
|
+
inputType: textarea
|
|
151
|
+
- slug: because
|
|
152
|
+
label: Because
|
|
153
|
+
valueType: string
|
|
154
|
+
inputType: textarea
|
|
155
|
+
|
|
156
|
+
- slug: narrative
|
|
157
|
+
displayName: Narrative
|
|
158
|
+
icon: book-open
|
|
159
|
+
color: amber
|
|
160
|
+
description: "The origin -> insight -> mission story arc."
|
|
161
|
+
properties:
|
|
162
|
+
- slug: arc
|
|
163
|
+
label: Story arc
|
|
164
|
+
valueType: string
|
|
165
|
+
inputType: textarea
|
|
166
|
+
- slug: status
|
|
167
|
+
label: Status
|
|
168
|
+
valueType: string
|
|
169
|
+
inputType: select
|
|
170
|
+
enumValues: [draft, active, archived]
|
|
171
|
+
constraints: { defaultValue: active }
|
|
172
|
+
|
|
173
|
+
- slug: differentiator
|
|
174
|
+
displayName: Differentiator
|
|
175
|
+
icon: sparkles
|
|
176
|
+
color: green
|
|
177
|
+
description: "One thing only we do, believe, or refuse."
|
|
178
|
+
properties:
|
|
179
|
+
- slug: statement
|
|
180
|
+
label: Statement
|
|
181
|
+
valueType: string
|
|
182
|
+
inputType: textarea
|
|
183
|
+
- slug: proof
|
|
184
|
+
label: Proof
|
|
185
|
+
valueType: string
|
|
186
|
+
inputType: textarea
|
|
187
|
+
|
|
188
|
+
- slug: non-goal
|
|
189
|
+
displayName: Non-Goal
|
|
190
|
+
icon: ban
|
|
191
|
+
color: red
|
|
192
|
+
description: "Things we will deliberately NOT do."
|
|
193
|
+
properties:
|
|
194
|
+
- slug: statement
|
|
195
|
+
label: Statement
|
|
196
|
+
valueType: string
|
|
197
|
+
inputType: textarea
|
|
198
|
+
- slug: reason
|
|
199
|
+
label: Reason
|
|
200
|
+
valueType: string
|
|
201
|
+
inputType: textarea
|
|
202
|
+
|
|
203
|
+
views:
|
|
204
|
+
- name: Mission & Vision
|
|
205
|
+
slug: mission-vision
|
|
206
|
+
type: table
|
|
207
|
+
scopeProfileSlugs: [mission, vision]
|
|
208
|
+
description: The mission and vision that anchor everything downstream.
|
|
209
|
+
defaultView: true
|
|
210
|
+
- name: Audiences
|
|
211
|
+
slug: audiences
|
|
212
|
+
type: table
|
|
213
|
+
scopeProfileSlug: audience
|
|
214
|
+
description: Ideal customer profiles and the jobs they hire us for.
|
|
215
|
+
- name: Pain Points
|
|
216
|
+
slug: pain-points
|
|
217
|
+
type: kanban
|
|
218
|
+
scopeProfileSlug: pain-point
|
|
219
|
+
groupBy: severity
|
|
220
|
+
config:
|
|
221
|
+
groupBy: severity
|
|
222
|
+
cardFields: [description, audience, evidence]
|
|
223
|
+
description: Pains grouped by severity.
|
|
224
|
+
- name: Positioning & Differentiators
|
|
225
|
+
slug: positioning-differentiators
|
|
226
|
+
type: table
|
|
227
|
+
scopeProfileSlug: differentiator
|
|
228
|
+
description: What only we do, and why it matters.
|
|
229
|
+
- name: Strategy Map
|
|
230
|
+
slug: strategy-map
|
|
231
|
+
type: graph
|
|
232
|
+
description: The strategic DNA as a connected graph.
|
|
233
|
+
|
|
234
|
+
# Schema-level relations — give the Strategy Map and the relation picker
|
|
235
|
+
# domain-specific links from day one (not just pod defaults).
|
|
236
|
+
entityLinks:
|
|
237
|
+
- sourceProfileSlug: pain-point
|
|
238
|
+
targetProfileSlug: audience
|
|
239
|
+
type: affects
|
|
240
|
+
label: Affects
|
|
241
|
+
- sourceProfileSlug: positioning
|
|
242
|
+
targetProfileSlug: audience
|
|
243
|
+
type: targets
|
|
244
|
+
label: Targets
|
|
245
|
+
- sourceProfileSlug: differentiator
|
|
246
|
+
targetProfileSlug: positioning
|
|
247
|
+
type: supports
|
|
248
|
+
label: Supports
|
|
249
|
+
|
|
250
|
+
onboarding:
|
|
251
|
+
goal: Capture the strategic DNA so every downstream workspace inherits a real company, not a generic template.
|
|
252
|
+
framing: >
|
|
253
|
+
THE COFOUNDER: Act as a sharp, skeptical co-founder. Pressure-test why-now, why-you, and
|
|
254
|
+
why-this. Refuse fuzzy answers; push for specifics and evidence. Be
|
|
255
|
+
respectful but direct — a vague mission helps no one.
|
|
256
|
+
collect:
|
|
257
|
+
- profileSlug: mission
|
|
258
|
+
what: The one mission that anchors the company — what we serve, what we change, why now.
|
|
259
|
+
cardinality: one
|
|
260
|
+
keyFields: [statement, time-horizon]
|
|
261
|
+
- profileSlug: audience
|
|
262
|
+
what: The ideal customer profiles the company is built for.
|
|
263
|
+
cardinality: few
|
|
264
|
+
keyFields: [segment, jobs-to-be-done]
|
|
265
|
+
- profileSlug: pain-point
|
|
266
|
+
what: Specific, evidenced pains those audiences feel today.
|
|
267
|
+
cardinality: several
|
|
268
|
+
keyFields: [description, severity]
|
|
269
|
+
- profileSlug: positioning
|
|
270
|
+
what: The market category, who we stand against, and why we win.
|
|
271
|
+
cardinality: one
|
|
272
|
+
keyFields: [category, against, because]
|
|
273
|
+
- profileSlug: differentiator
|
|
274
|
+
what: The few things only we do, believe, or refuse.
|
|
275
|
+
cardinality: few
|
|
276
|
+
keyFields: [statement, proof]
|
|
277
|
+
- profileSlug: non-goal
|
|
278
|
+
what: The things we will deliberately NOT do.
|
|
279
|
+
cardinality: few
|
|
280
|
+
keyFields: [statement, reason]
|
|
281
|
+
openingQuestions:
|
|
282
|
+
- "In one sentence — who do you serve and what do you change for them?"
|
|
283
|
+
- "Why now? What shifted in the world that makes this the moment?"
|
|
284
|
+
- "Who is this absolutely NOT for?"
|
|
285
|
+
doneWhen: mission + at least one audience + positioning captured.
|
|
286
|
+
|
|
287
|
+
app:
|
|
288
|
+
kind: stored
|
|
289
|
+
cellKey: entity-detail
|
|
290
|
+
|
|
291
|
+
layout:
|
|
292
|
+
defaultView: Mission & Vision
|
|
293
|
+
defaultApp: null
|
|
294
|
+
pinnedApps: [dashboard, data, intelligence]
|
|
295
|
+
sidebarItems:
|
|
296
|
+
- kind: view
|
|
297
|
+
viewName: Mission & Vision
|
|
298
|
+
label: Mission & Vision
|
|
299
|
+
icon: compass
|
|
300
|
+
- kind: view
|
|
301
|
+
viewName: Audiences
|
|
302
|
+
label: Audiences
|
|
303
|
+
icon: users
|
|
304
|
+
- kind: view
|
|
305
|
+
viewName: Pain Points
|
|
306
|
+
label: Pain Points
|
|
307
|
+
icon: flame
|
|
308
|
+
- kind: view
|
|
309
|
+
viewName: Positioning & Differentiators
|
|
310
|
+
label: Positioning
|
|
311
|
+
icon: crosshair
|
|
312
|
+
- kind: view
|
|
313
|
+
viewName: Strategy Map
|
|
314
|
+
label: Strategy Map
|
|
315
|
+
icon: share-2
|
|
316
|
+
- kind: app
|
|
317
|
+
appId: data
|
|
318
|
+
label: All Data
|
|
319
|
+
icon: database
|
|
320
|
+
|
|
321
|
+
bento:
|
|
322
|
+
viewName: Foundation Command Center
|
|
323
|
+
blocks:
|
|
324
|
+
- kind: view
|
|
325
|
+
viewName: Mission & Vision
|
|
326
|
+
pos: { x: 0, y: 0, w: 8, h: 4 }
|
|
327
|
+
- kind: view
|
|
328
|
+
viewName: Positioning & Differentiators
|
|
329
|
+
pos: { x: 8, y: 0, w: 4, h: 4 }
|
|
330
|
+
- kind: view
|
|
331
|
+
viewName: Audiences
|
|
332
|
+
pos: { x: 0, y: 4, w: 6, h: 4 }
|
|
333
|
+
- kind: view
|
|
334
|
+
viewName: Pain Points
|
|
335
|
+
pos: { x: 6, y: 4, w: 6, h: 4 }
|
|
336
|
+
|
|
337
|
+
seedEntities:
|
|
338
|
+
- profileSlug: mission
|
|
339
|
+
title: Example Mission
|
|
340
|
+
properties:
|
|
341
|
+
statement: "Example — replace this: we help [audience] [change] so they can [outcome], starting now because [why now]."
|
|
342
|
+
time-horizon: 3 years
|
|
343
|
+
status: active
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @synap-core/workspace-templates
|
|
3
|
+
*
|
|
4
|
+
* Canonical workspace template definitions.
|
|
5
|
+
* ==========================================
|
|
6
|
+
*
|
|
7
|
+
* Usage (browser / backend / CLI):
|
|
8
|
+
*
|
|
9
|
+
* import { getWorkspaceTemplate, listPublicTemplates } from '@synap-core/workspace-templates';
|
|
10
|
+
*
|
|
11
|
+
* const template = getWorkspaceTemplate('brand-library');
|
|
12
|
+
* // template.workspace.name === 'Brand Library'
|
|
13
|
+
* // template.app.kind === 'native'
|
|
14
|
+
* // template.layout.defaultApp === 'brandLibrary'
|
|
15
|
+
*
|
|
16
|
+
* YAML source files live in src/*.yaml — AI-friendly, commentable, mergeable.
|
|
17
|
+
* Run `pnpm build` to regenerate src/templates.ts from YAML.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export type {
|
|
21
|
+
WorkspaceYaml,
|
|
22
|
+
TemplateMeta,
|
|
23
|
+
TemplateAppRef,
|
|
24
|
+
TemplateAppKind,
|
|
25
|
+
TemplateProfile,
|
|
26
|
+
TemplateProperty,
|
|
27
|
+
TemplateView,
|
|
28
|
+
TemplateSidebarItem,
|
|
29
|
+
TemplateSidebarSurface,
|
|
30
|
+
TemplateLayoutConfig,
|
|
31
|
+
TemplateBentoBlock,
|
|
32
|
+
TemplateEntityLink,
|
|
33
|
+
TemplateSeedEntity,
|
|
34
|
+
TemplateSuggestedRelation,
|
|
35
|
+
TemplateDisplayTemplate,
|
|
36
|
+
TemplateIntegration,
|
|
37
|
+
TemplateAutomation,
|
|
38
|
+
TemplateExtendsRef,
|
|
39
|
+
TemplateProfileEntityBentoTemplates,
|
|
40
|
+
TemplateDefaultSource,
|
|
41
|
+
TemplateSourceRole,
|
|
42
|
+
TemplateOnboarding,
|
|
43
|
+
TemplateOnboardingCollectTarget,
|
|
44
|
+
TemplatePlaybook,
|
|
45
|
+
TemplatePlaybookParam,
|
|
46
|
+
} from './types.js';
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
WORKSPACE_TEMPLATES,
|
|
50
|
+
getWorkspaceTemplate,
|
|
51
|
+
listWorkspaceTemplates,
|
|
52
|
+
listPublicTemplates,
|
|
53
|
+
} from './templates.js';
|
|
54
|
+
|
|
55
|
+
export type { WorkspaceTemplateSlug } from './templates.js';
|
|
56
|
+
|
|
57
|
+
export { toWorkspaceDefinition, toPackageDefinition } from './define.js';
|
|
58
|
+
export type {
|
|
59
|
+
WorkspaceDefinitionInput,
|
|
60
|
+
ToDefinitionResult,
|
|
61
|
+
PackageDefinitionOutput,
|
|
62
|
+
} from './define.js';
|