@synap-core/workspace-templates 0.6.0 → 0.6.2

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/src/templates.ts CHANGED
@@ -2347,6 +2347,7 @@ const DATA = {
2347
2347
  "viewName": "Agent Fleet Home",
2348
2348
  "blocks": [
2349
2349
  {
2350
+ "kind": "widget",
2350
2351
  "widgetType": "welcome-header",
2351
2352
  "pos": {
2352
2353
  "x": 0,
@@ -2360,6 +2361,7 @@ const DATA = {
2360
2361
  }
2361
2362
  },
2362
2363
  {
2364
+ "kind": "widget",
2363
2365
  "widgetType": "entity-count",
2364
2366
  "pos": {
2365
2367
  "x": 0,
@@ -2374,6 +2376,7 @@ const DATA = {
2374
2376
  }
2375
2377
  },
2376
2378
  {
2379
+ "kind": "widget",
2377
2380
  "widgetType": "entity-count",
2378
2381
  "pos": {
2379
2382
  "x": 3,
@@ -2388,6 +2391,7 @@ const DATA = {
2388
2391
  }
2389
2392
  },
2390
2393
  {
2394
+ "kind": "widget",
2391
2395
  "widgetType": "entity-count",
2392
2396
  "pos": {
2393
2397
  "x": 6,
@@ -2402,6 +2406,7 @@ const DATA = {
2402
2406
  }
2403
2407
  },
2404
2408
  {
2409
+ "kind": "widget",
2405
2410
  "widgetType": "entity-count",
2406
2411
  "pos": {
2407
2412
  "x": 9,
@@ -2416,6 +2421,7 @@ const DATA = {
2416
2421
  }
2417
2422
  },
2418
2423
  {
2424
+ "kind": "widget",
2419
2425
  "widgetType": "entity-spotlight",
2420
2426
  "pos": {
2421
2427
  "x": 0,
@@ -2432,6 +2438,7 @@ const DATA = {
2432
2438
  }
2433
2439
  },
2434
2440
  {
2441
+ "kind": "widget",
2435
2442
  "widgetType": "entity-list",
2436
2443
  "pos": {
2437
2444
  "x": 4,
@@ -2447,6 +2454,7 @@ const DATA = {
2447
2454
  }
2448
2455
  },
2449
2456
  {
2457
+ "kind": "widget",
2450
2458
  "widgetType": "entity-list",
2451
2459
  "pos": {
2452
2460
  "x": 8,
@@ -6506,6 +6514,26 @@ const DATA = {
6506
6514
  "label": "Depends on"
6507
6515
  }
6508
6516
  ],
6517
+ "playbooks": [
6518
+ {
6519
+ "name": "Evaluate Feature",
6520
+ "description": "Assess a feature — its current state, whether it's worth building, and how it fits the rest of the system.",
6521
+ "goalTemplate": "Evaluate this feature ({feature}): where it stands today (its status, progress, and any blockers), whether it is actually useful (the problem it solves and for whom), and how it integrates with the existing apps, packages, services, and environments in this workspace. Finish with a clear recommendation — continue, cut, or reshape — and the reasoning behind it.",
6522
+ "subjectProfile": {
6523
+ "profileSlug": "devplane_feature"
6524
+ },
6525
+ "params": [
6526
+ {
6527
+ "name": "feature",
6528
+ "type": "entity",
6529
+ "label": "Feature",
6530
+ "required": true
6531
+ }
6532
+ ],
6533
+ "executor": "is-agent",
6534
+ "status": "active"
6535
+ }
6536
+ ],
6509
6537
  "onboarding": {
6510
6538
  "goal": "Capture the real engineering surface — the apps that are shipped, where their code lives, what runs behind them, where they deploy, and what's in flight — so the workspace mirrors what the team actually builds and runs, not a generic template.",
6511
6539
  "framing": "THE STAFF ENGINEER: Act as a pragmatic, precise staff/platform engineer standing up a developer command center. Tease out what's actually shipped vs. planned, where the code lives (repos + local paths), what runs behind each app, where it deploys, and what's on the bench right now. Prefer concrete over aspirational — a repo URL beats a wish. Tie the roadmap back to the Foundation's mission and audiences: the surface exists to serve them.\n",
@@ -6753,7 +6781,7 @@ const DATA = {
6753
6781
  "narrative.positioning"
6754
6782
  ],
6755
6783
  "sourceRoles": {
6756
- "brand": "provider",
6784
+ "brand": "consumer",
6757
6785
  "narrative": "provider"
6758
6786
  }
6759
6787
  },
@@ -7829,762 +7857,1154 @@ const DATA = {
7829
7857
  ]
7830
7858
  }
7831
7859
  },
7832
- "content-studio": {
7860
+ "content-os": {
7833
7861
  "meta": {
7834
- "slug": "content-studio",
7835
- "name": "Content Studio",
7836
- "description": "HyperFrames + Remotion video pipeline — script, design, compose, render, publish.",
7837
- "icon": "clapperboard",
7838
- "color": "violet",
7862
+ "slug": "content-os",
7863
+ "name": "Content OS",
7864
+ "description": "Your editorial operating system — pillars, posts, platforms, and newsletters. Turn raw thinking into a published content engine, all connected to your campaigns and brand voice.",
7865
+ "icon": "pen-tool",
7866
+ "color": "#6366F1",
7839
7867
  "tags": [
7840
7868
  "content",
7841
- "video",
7842
- "creation",
7843
- "pipeline"
7869
+ "editorial",
7870
+ "publishing",
7871
+ "creator",
7872
+ "newsletter"
7844
7873
  ],
7845
7874
  "isPublic": true
7846
7875
  },
7876
+ "dependencies": [
7877
+ {
7878
+ "slug": "foundation",
7879
+ "kind": "workspace",
7880
+ "relation": "require",
7881
+ "reason": "Provides the pod-wide sponsor role vocabulary this workspace's posts/newsletters reference."
7882
+ },
7883
+ {
7884
+ "slug": "marketing-campaign",
7885
+ "kind": "workspace",
7886
+ "relation": "require",
7887
+ "reason": "Provides the campaign kind (and its SSOT property body) this workspace's posts/newsletters link to."
7888
+ }
7889
+ ],
7847
7890
  "workspace": {
7848
- "name": "Content Studio",
7849
- "description": "Content creation pipeline — HyperFrames for rapid design, Remotion for production rendering. Create videos, carousels, reels, and social content from one workspace.\n",
7850
- "proposalId": "content-studio-v1",
7851
- "subtype": "content-studio",
7891
+ "name": "Content OS",
7892
+ "description": "The editorial operating system — a view-driven workspace over your content model. Organize by pillar, track every post from Idea to Published, run your platforms and newsletters, and keep it all wired to the campaigns and brand voice that give it context.\n",
7893
+ "proposalId": "content-os-v1",
7894
+ "subtype": "content-os",
7852
7895
  "visibility": "pod_visible",
7853
7896
  "capabilities": [
7854
- "content.pipeline",
7855
- "content.compose",
7856
- "content.render",
7857
- "content.assets",
7858
- "content.templates"
7897
+ "content.editorial",
7898
+ "content.pillars",
7899
+ "content.calendar",
7900
+ "content.newsletter"
7859
7901
  ],
7860
7902
  "sourceRoles": {
7861
7903
  "brand": "consumer",
7904
+ "marketing": "consumer",
7862
7905
  "content": "provider"
7863
7906
  }
7864
7907
  },
7865
7908
  "profiles": [
7866
7909
  {
7867
- "slug": "content-pipeline",
7868
- "displayName": "Pipeline",
7869
- "icon": "workflow",
7870
- "color": "violet",
7871
- "description": "A content creation pipeline: script → design → compose → render.",
7872
- "semanticSlug": "content.pipeline",
7910
+ "slug": "post",
7911
+ "displayName": "Post",
7912
+ "icon": "file-edit",
7913
+ "color": "#6366F1",
7914
+ "description": "Your atomic content unit. One idea, multiple platform formats — tracked from spark to publication.",
7915
+ "scope": "WORKSPACE",
7873
7916
  "properties": [
7874
7917
  {
7875
- "slug": "pipeline-kind",
7876
- "label": "Kind",
7918
+ "slug": "post-status",
7919
+ "label": "Status",
7877
7920
  "valueType": "string",
7878
7921
  "inputType": "select",
7879
7922
  "enumValues": [
7880
- "reel",
7881
- "carousel",
7882
- "demo",
7883
- "explainer",
7884
- "custom"
7885
- ],
7886
- "constraints": {
7887
- "defaultValue": "reel"
7888
- }
7923
+ "Idea",
7924
+ "Briefed",
7925
+ "In Draft",
7926
+ "Review",
7927
+ "Scheduled",
7928
+ "Published",
7929
+ "Archived"
7930
+ ]
7889
7931
  },
7890
7932
  {
7891
- "slug": "pipeline-platform",
7892
- "label": "Platform",
7933
+ "slug": "post-format",
7934
+ "label": "Format",
7893
7935
  "valueType": "string",
7894
7936
  "inputType": "select",
7895
7937
  "enumValues": [
7896
- "instagram",
7897
- "tiktok",
7898
- "youtube",
7899
- "linkedin",
7900
- "x",
7901
- "all"
7902
- ],
7903
- "constraints": {
7904
- "defaultValue": "instagram"
7905
- }
7938
+ "Article",
7939
+ "Thread",
7940
+ "Short Video",
7941
+ "Long Video",
7942
+ "Carousel",
7943
+ "Image Post",
7944
+ "Story",
7945
+ "Newsletter Section",
7946
+ "Podcast Episode",
7947
+ "Other"
7948
+ ]
7906
7949
  },
7907
7950
  {
7908
- "slug": "pipeline-mode",
7909
- "label": "Mode",
7951
+ "slug": "post-platform",
7952
+ "label": "Platform",
7910
7953
  "valueType": "string",
7911
7954
  "inputType": "select",
7912
7955
  "enumValues": [
7913
- "fast",
7914
- "quality",
7915
- "data"
7916
- ],
7917
- "constraints": {
7918
- "defaultValue": "quality"
7919
- }
7956
+ "LinkedIn",
7957
+ "Instagram",
7958
+ "TikTok",
7959
+ "YouTube",
7960
+ "Twitter / X",
7961
+ "Threads",
7962
+ "Bluesky",
7963
+ "Newsletter",
7964
+ "Podcast",
7965
+ "Blog",
7966
+ "Other"
7967
+ ]
7920
7968
  },
7921
7969
  {
7922
- "slug": "pipeline-script",
7923
- "label": "Script",
7924
- "valueType": "string",
7925
- "inputType": "textarea"
7970
+ "slug": "post-pillar",
7971
+ "label": "Pillar",
7972
+ "valueType": "entity_id",
7973
+ "targetProfileSlug": "pillar",
7974
+ "inputType": "entity_select"
7926
7975
  },
7927
7976
  {
7928
- "slug": "pipeline-stages",
7929
- "label": "Stages",
7930
- "valueType": "string",
7931
- "inputType": "textarea"
7932
- }
7933
- ]
7934
- },
7935
- {
7936
- "slug": "content-composition",
7937
- "displayName": "Composition",
7938
- "icon": "clapperboard",
7939
- "color": "blue",
7940
- "description": "A Remotion composition or HyperFrames sequence ready for rendering.",
7941
- "semanticSlug": "content.composition",
7942
- "properties": [
7977
+ "slug": "post-campaign",
7978
+ "label": "Campaign",
7979
+ "valueType": "entity_id",
7980
+ "targetProfileSlug": "campaign",
7981
+ "inputType": "entity_select"
7982
+ },
7943
7983
  {
7944
- "slug": "composition-id",
7945
- "label": "Composition ID",
7984
+ "slug": "post-sponsor",
7985
+ "label": "Sponsor",
7986
+ "valueType": "entity_id",
7987
+ "targetProfileSlug": "sponsor",
7988
+ "inputType": "entity_select"
7989
+ },
7990
+ {
7991
+ "slug": "publish-date",
7992
+ "label": "Publish Date",
7993
+ "valueType": "date"
7994
+ },
7995
+ {
7996
+ "slug": "post-hook",
7997
+ "label": "Hook / Headline",
7946
7998
  "valueType": "string",
7947
- "inputType": "text"
7999
+ "inputType": "text",
8000
+ "placeholder": "Opening line or headline that stops the scroll"
7948
8001
  },
7949
8002
  {
7950
- "slug": "aspect-ratio",
7951
- "label": "Aspect Ratio",
8003
+ "slug": "post-cta",
8004
+ "label": "CTA",
7952
8005
  "valueType": "string",
7953
- "inputType": "select",
7954
- "enumValues": [
7955
- "9:16",
7956
- "16:9",
7957
- "1:1",
7958
- "4:5"
7959
- ],
7960
- "constraints": {
7961
- "defaultValue": "16:9"
7962
- }
8006
+ "inputType": "text",
8007
+ "placeholder": "What should the audience do?"
7963
8008
  },
7964
8009
  {
7965
- "slug": "duration-seconds",
7966
- "label": "Duration (seconds)",
8010
+ "slug": "post-tags",
8011
+ "label": "Tags",
8012
+ "valueType": "array"
8013
+ },
8014
+ {
8015
+ "slug": "engagement-score",
8016
+ "label": "Engagement Score",
7967
8017
  "valueType": "number",
7968
- "inputType": "number"
8018
+ "inputType": "number",
8019
+ "placeholder": "Numeric performance metric (likes + comments + shares)"
7969
8020
  },
7970
8021
  {
7971
- "slug": "hyperframes-meta",
7972
- "label": "HyperFrames JSON",
7973
- "valueType": "string",
7974
- "inputType": "textarea"
8022
+ "slug": "post-reach",
8023
+ "label": "Reach / Views",
8024
+ "valueType": "number",
8025
+ "inputType": "number"
7975
8026
  },
7976
8027
  {
7977
- "slug": "template-id",
7978
- "label": "Template",
8028
+ "slug": "repurposed-from",
8029
+ "label": "Repurposed From",
7979
8030
  "valueType": "string",
7980
- "inputType": "text"
8031
+ "inputType": "text",
8032
+ "placeholder": "Source post or content this was adapted from"
7981
8033
  },
7982
8034
  {
7983
- "slug": "pipeline-ref",
7984
- "label": "Pipeline",
8035
+ "slug": "post-url",
8036
+ "label": "Published URL",
7985
8037
  "valueType": "string",
7986
- "inputType": "text"
8038
+ "inputType": "text",
8039
+ "placeholder": "https://...",
8040
+ "constraints": {
8041
+ "format": "url"
8042
+ }
7987
8043
  }
7988
8044
  ]
7989
8045
  },
7990
8046
  {
7991
- "slug": "content-asset",
7992
- "displayName": "Asset",
7993
- "icon": "image",
7994
- "color": "green",
7995
- "description": "Media asset: image, video clip, audio track, font, or script.",
7996
- "semanticSlug": "content.asset",
8047
+ "slug": "pillar",
8048
+ "displayName": "Pillar",
8049
+ "icon": "columns",
8050
+ "color": "#8B5CF6",
8051
+ "description": "A recurring content theme — the lens through which your audience knows you. The organizing principle of your brand.",
8052
+ "scope": "WORKSPACE",
7997
8053
  "properties": [
7998
8054
  {
7999
- "slug": "asset-kind",
8000
- "label": "Kind",
8055
+ "slug": "pillar-status",
8056
+ "label": "Status",
8001
8057
  "valueType": "string",
8002
8058
  "inputType": "select",
8003
8059
  "enumValues": [
8004
- "image",
8005
- "video",
8006
- "audio",
8007
- "font",
8008
- "script",
8009
- "other"
8010
- ]
8060
+ "Active",
8061
+ "Developing",
8062
+ "Paused",
8063
+ "Retired"
8064
+ ]
8011
8065
  },
8012
8066
  {
8013
- "slug": "source-kind",
8014
- "label": "Source",
8067
+ "slug": "pillar-audience",
8068
+ "label": "Audience Segment",
8015
8069
  "valueType": "string",
8016
- "inputType": "select",
8017
- "enumValues": [
8018
- "uploaded",
8019
- "brand",
8020
- "generated"
8021
- ],
8022
- "constraints": {
8023
- "defaultValue": "uploaded"
8024
- }
8070
+ "inputType": "text",
8071
+ "placeholder": "Who does this pillar speak to?"
8025
8072
  },
8026
8073
  {
8027
- "slug": "source-url",
8028
- "label": "URL",
8074
+ "slug": "pillar-goal",
8075
+ "label": "Audience Goal",
8029
8076
  "valueType": "string",
8030
- "inputType": "url"
8077
+ "inputType": "text",
8078
+ "placeholder": "What should the audience think, feel, or do after consuming this pillar?"
8031
8079
  },
8032
8080
  {
8033
- "slug": "brand-asset-ref",
8034
- "label": "Brand Asset Ref",
8081
+ "slug": "pillar-formats",
8082
+ "label": "Primary Formats",
8035
8083
  "valueType": "string",
8036
- "inputType": "text"
8084
+ "inputType": "select",
8085
+ "enumValues": [
8086
+ "Articles + Threads",
8087
+ "Short Video",
8088
+ "Long Video",
8089
+ "Newsletter",
8090
+ "Podcast",
8091
+ "Carousel",
8092
+ "Mixed"
8093
+ ]
8037
8094
  },
8038
8095
  {
8039
- "slug": "file-id",
8040
- "label": "File ID",
8096
+ "slug": "post-count-pillar",
8097
+ "label": "Total Posts Published",
8098
+ "valueType": "number",
8099
+ "inputType": "number"
8100
+ },
8101
+ {
8102
+ "slug": "avg-engagement",
8103
+ "label": "Avg Engagement Score",
8104
+ "valueType": "number",
8105
+ "inputType": "number"
8106
+ },
8107
+ {
8108
+ "slug": "top-post",
8109
+ "label": "Top Performing Post",
8041
8110
  "valueType": "string",
8042
- "inputType": "text"
8111
+ "inputType": "text",
8112
+ "placeholder": "Title of best performing post in this pillar"
8043
8113
  },
8044
8114
  {
8045
- "slug": "document-id",
8046
- "label": "Document ID",
8115
+ "slug": "posting-frequency",
8116
+ "label": "Target Frequency",
8047
8117
  "valueType": "string",
8048
- "inputType": "text"
8118
+ "inputType": "select",
8119
+ "enumValues": [
8120
+ "Daily",
8121
+ "3x / week",
8122
+ "2x / week",
8123
+ "Weekly",
8124
+ "Bi-weekly",
8125
+ "Monthly",
8126
+ "Ad hoc"
8127
+ ]
8128
+ },
8129
+ {
8130
+ "slug": "pillar-tags",
8131
+ "label": "Tags",
8132
+ "valueType": "array"
8049
8133
  }
8050
8134
  ]
8051
8135
  },
8052
8136
  {
8053
- "slug": "render-job",
8054
- "displayName": "Render Job",
8055
- "icon": "play",
8056
- "color": "amber",
8057
- "description": "A render execution — queued, rendering, done, or failed.",
8058
- "semanticSlug": "content.render",
8137
+ "slug": "platform",
8138
+ "displayName": "Platform",
8139
+ "icon": "share-2",
8140
+ "color": "#06B6D4",
8141
+ "description": "A social account, newsletter publication, or podcast channel. Each platform has its own audience metrics and publishing rhythm.",
8142
+ "scope": "WORKSPACE",
8059
8143
  "properties": [
8060
8144
  {
8061
- "slug": "job-status",
8062
- "label": "Status",
8145
+ "slug": "platform-type",
8146
+ "label": "Type",
8063
8147
  "valueType": "string",
8064
8148
  "inputType": "select",
8065
8149
  "enumValues": [
8066
- "queued",
8067
- "rendering",
8068
- "done",
8069
- "failed"
8070
- ],
8071
- "constraints": {
8072
- "defaultValue": "queued"
8073
- }
8150
+ "LinkedIn",
8151
+ "Instagram",
8152
+ "TikTok",
8153
+ "YouTube",
8154
+ "Twitter / X",
8155
+ "Threads",
8156
+ "Bluesky",
8157
+ "Newsletter",
8158
+ "Podcast",
8159
+ "Blog / Website",
8160
+ "Other"
8161
+ ]
8074
8162
  },
8075
8163
  {
8076
- "slug": "output-format",
8077
- "label": "Format",
8164
+ "slug": "platform-status",
8165
+ "label": "Status",
8078
8166
  "valueType": "string",
8079
8167
  "inputType": "select",
8080
8168
  "enumValues": [
8081
- "mp4",
8082
- "gif",
8083
- "webm",
8084
- "mp3"
8085
- ],
8086
- "constraints": {
8087
- "defaultValue": "mp4"
8088
- }
8169
+ "Active",
8170
+ "Building",
8171
+ "Maintenance Mode",
8172
+ "Inactive"
8173
+ ]
8089
8174
  },
8090
8175
  {
8091
- "slug": "output-url",
8092
- "label": "Output URL",
8176
+ "slug": "platform-url",
8177
+ "label": "Profile URL",
8093
8178
  "valueType": "string",
8094
- "inputType": "url"
8179
+ "inputType": "text",
8180
+ "placeholder": "https://...",
8181
+ "constraints": {
8182
+ "format": "url"
8183
+ }
8095
8184
  },
8096
8185
  {
8097
- "slug": "render-duration-ms",
8098
- "label": "Render Duration (ms)",
8186
+ "slug": "follower-count",
8187
+ "label": "Follower / Subscriber Count",
8099
8188
  "valueType": "number",
8100
8189
  "inputType": "number"
8101
8190
  },
8102
8191
  {
8103
- "slug": "error-message",
8104
- "label": "Error",
8105
- "valueType": "string",
8106
- "inputType": "textarea"
8192
+ "slug": "follower-target",
8193
+ "label": "Target Count",
8194
+ "valueType": "number",
8195
+ "inputType": "number"
8107
8196
  },
8108
8197
  {
8109
- "slug": "composition-ref",
8110
- "label": "Composition",
8111
- "valueType": "string",
8112
- "inputType": "text"
8113
- }
8114
- ]
8115
- },
8116
- {
8117
- "slug": "content-template",
8118
- "displayName": "Template",
8119
- "icon": "layout-template",
8120
- "color": "pink",
8121
- "description": "Reusable video template — HyperFrames, Remotion, or hybrid.",
8122
- "semanticSlug": "content.template",
8123
- "properties": [
8198
+ "slug": "avg-engagement-rate",
8199
+ "label": "Avg Engagement Rate (%)",
8200
+ "valueType": "number",
8201
+ "inputType": "number"
8202
+ },
8124
8203
  {
8125
- "slug": "template-kind",
8126
- "label": "Kind",
8204
+ "slug": "platform-posting-freq",
8205
+ "label": "Posting Frequency",
8127
8206
  "valueType": "string",
8128
8207
  "inputType": "select",
8129
8208
  "enumValues": [
8130
- "hyperframes",
8131
- "remotion",
8132
- "hybrid"
8133
- ],
8134
- "constraints": {
8135
- "defaultValue": "hyperframes"
8136
- }
8209
+ "Daily",
8210
+ "3x / week",
8211
+ "2x / week",
8212
+ "Weekly",
8213
+ "Bi-weekly",
8214
+ "Monthly",
8215
+ "As Needed"
8216
+ ]
8137
8217
  },
8138
8218
  {
8139
- "slug": "aspect-ratio",
8140
- "label": "Aspect Ratio",
8141
- "valueType": "string",
8142
- "inputType": "select",
8143
- "enumValues": [
8144
- "9:16",
8145
- "16:9",
8146
- "1:1",
8147
- "4:5"
8148
- ],
8149
- "constraints": {
8150
- "defaultValue": "16:9"
8151
- }
8219
+ "slug": "last-post-date",
8220
+ "label": "Last Post Date",
8221
+ "valueType": "date"
8152
8222
  },
8153
8223
  {
8154
- "slug": "template-status",
8155
- "label": "Status",
8224
+ "slug": "platform-notes",
8225
+ "label": "Notes",
8156
8226
  "valueType": "string",
8157
- "inputType": "select",
8158
- "enumValues": [
8159
- "draft",
8160
- "approved",
8161
- "deprecated"
8162
- ],
8163
- "constraints": {
8164
- "defaultValue": "approved"
8165
- }
8227
+ "inputType": "text",
8228
+ "placeholder": "What works here? Tone, format, best times..."
8166
8229
  },
8167
8230
  {
8168
- "slug": "template-config",
8169
- "label": "Config JSON",
8170
- "valueType": "string",
8171
- "inputType": "textarea"
8231
+ "slug": "platform-tags",
8232
+ "label": "Tags",
8233
+ "valueType": "array"
8172
8234
  }
8173
8235
  ]
8174
8236
  },
8175
8237
  {
8176
- "slug": "post",
8177
- "displayName": "Post",
8178
- "icon": "file-edit",
8179
- "color": "#6366F1",
8180
- "description": "Your atomic content unit. One idea, multiple platform formats — tracked from spark to publication.",
8238
+ "slug": "newsletter",
8239
+ "displayName": "Newsletter",
8240
+ "icon": "mail",
8241
+ "color": "#10B981",
8242
+ "description": "A newsletter issue — your direct channel to an owned audience. No algorithm, no platform fee, no intermediary.",
8181
8243
  "scope": "WORKSPACE",
8182
8244
  "properties": [
8183
8245
  {
8184
- "slug": "post-status",
8246
+ "slug": "newsletter-status",
8185
8247
  "label": "Status",
8186
8248
  "valueType": "string",
8187
8249
  "inputType": "select",
8188
8250
  "enumValues": [
8189
8251
  "Idea",
8190
- "Briefed",
8191
- "In Draft",
8192
- "Review",
8252
+ "Drafting",
8253
+ "Editing",
8193
8254
  "Scheduled",
8194
- "Published",
8255
+ "Sent",
8195
8256
  "Archived"
8196
8257
  ]
8197
8258
  },
8198
8259
  {
8199
- "slug": "post-format",
8200
- "label": "Format",
8260
+ "slug": "newsletter-series",
8261
+ "label": "Series",
8201
8262
  "valueType": "string",
8202
- "inputType": "select",
8203
- "enumValues": [
8204
- "Article",
8205
- "Thread",
8206
- "Short Video",
8207
- "Long Video",
8208
- "Carousel",
8209
- "Image Post",
8210
- "Story",
8211
- "Newsletter Section",
8212
- "Podcast Episode",
8213
- "Other"
8214
- ]
8215
- },
8216
- {
8217
- "slug": "post-platform",
8218
- "label": "Platform",
8219
- "valueType": "string",
8220
- "inputType": "select",
8221
- "enumValues": [
8222
- "LinkedIn",
8223
- "Instagram",
8224
- "TikTok",
8225
- "YouTube",
8226
- "Twitter / X",
8227
- "Threads",
8228
- "Bluesky",
8229
- "Newsletter",
8230
- "Podcast",
8231
- "Blog",
8232
- "Other"
8233
- ]
8234
- },
8235
- {
8236
- "slug": "post-pillar",
8237
- "label": "Pillar",
8238
- "valueType": "entity_id"
8239
- },
8240
- {
8241
- "slug": "post-campaign",
8242
- "label": "Campaign",
8243
- "valueType": "entity_id"
8244
- },
8245
- {
8246
- "slug": "post-sponsor",
8247
- "label": "Sponsor",
8248
- "valueType": "entity_id"
8263
+ "inputType": "text",
8264
+ "placeholder": "Which newsletter series is this issue part of?"
8249
8265
  },
8250
8266
  {
8251
- "slug": "publish-date",
8252
- "label": "Publish Date",
8253
- "valueType": "date"
8267
+ "slug": "issue-number",
8268
+ "label": "Issue Number",
8269
+ "valueType": "number",
8270
+ "inputType": "number"
8254
8271
  },
8255
8272
  {
8256
- "slug": "post-hook",
8257
- "label": "Hook / Headline",
8273
+ "slug": "subject-line",
8274
+ "label": "Subject Line",
8258
8275
  "valueType": "string",
8259
8276
  "inputType": "text",
8260
- "placeholder": "Opening line or headline that stops the scroll"
8277
+ "placeholder": "The subject line — your most important copy"
8261
8278
  },
8262
8279
  {
8263
- "slug": "post-cta",
8264
- "label": "CTA",
8280
+ "slug": "preview-text",
8281
+ "label": "Preview Text",
8265
8282
  "valueType": "string",
8266
8283
  "inputType": "text",
8267
- "placeholder": "What should the audience do?"
8284
+ "placeholder": "45-character preview shown in inbox (after subject)"
8268
8285
  },
8269
8286
  {
8270
- "slug": "post-tags",
8271
- "label": "Tags",
8272
- "valueType": "array"
8287
+ "slug": "send-date",
8288
+ "label": "Send Date",
8289
+ "valueType": "date"
8273
8290
  },
8274
8291
  {
8275
- "slug": "engagement-score",
8276
- "label": "Engagement Score",
8292
+ "slug": "subscriber-count",
8293
+ "label": "Subscriber Count at Send",
8277
8294
  "valueType": "number",
8278
- "inputType": "number",
8279
- "placeholder": "Numeric performance metric (likes + comments + shares)"
8295
+ "inputType": "number"
8280
8296
  },
8281
8297
  {
8282
- "slug": "post-reach",
8283
- "label": "Reach / Views",
8298
+ "slug": "open-rate",
8299
+ "label": "Open Rate (%)",
8284
8300
  "valueType": "number",
8285
8301
  "inputType": "number"
8286
8302
  },
8287
8303
  {
8288
- "slug": "repurposed-from",
8289
- "label": "Repurposed From",
8290
- "valueType": "string",
8291
- "inputType": "text",
8292
- "placeholder": "Source post or content this was adapted from"
8304
+ "slug": "click-rate",
8305
+ "label": "Click Rate (%)",
8306
+ "valueType": "number",
8307
+ "inputType": "number"
8293
8308
  },
8294
8309
  {
8295
- "slug": "post-url",
8296
- "label": "Published URL",
8297
- "valueType": "string",
8298
- "inputType": "text",
8299
- "placeholder": "https://...",
8300
- "constraints": {
8301
- "format": "url"
8302
- }
8310
+ "slug": "newsletter-sponsor",
8311
+ "label": "Sponsor",
8312
+ "valueType": "entity_id",
8313
+ "targetProfileSlug": "sponsor",
8314
+ "inputType": "entity_select"
8315
+ },
8316
+ {
8317
+ "slug": "newsletter-campaign",
8318
+ "label": "Campaign",
8319
+ "valueType": "entity_id",
8320
+ "targetProfileSlug": "campaign",
8321
+ "inputType": "entity_select"
8322
+ },
8323
+ {
8324
+ "slug": "newsletter-pillar",
8325
+ "label": "Primary Pillar",
8326
+ "valueType": "entity_id",
8327
+ "targetProfileSlug": "pillar",
8328
+ "inputType": "entity_select"
8329
+ },
8330
+ {
8331
+ "slug": "newsletter-tags",
8332
+ "label": "Tags",
8333
+ "valueType": "array"
8303
8334
  }
8304
8335
  ]
8305
8336
  },
8306
8337
  {
8307
- "slug": "pillar",
8308
- "displayName": "Pillar",
8309
- "icon": "columns",
8310
- "color": "#8B5CF6",
8311
- "description": "A recurring content theme — the lens through which your audience knows you. The organizing principle of your brand.",
8312
- "scope": "WORKSPACE",
8338
+ "slug": "campaign",
8339
+ "displayName": "Campaign",
8340
+ "icon": "megaphone",
8341
+ "color": "pink",
8342
+ "description": "A marketing campaign — email, social, event, content, or partnership",
8343
+ "semanticSlug": "marketing.campaign",
8313
8344
  "properties": [
8314
8345
  {
8315
- "slug": "pillar-status",
8346
+ "slug": "campaign-status",
8316
8347
  "label": "Status",
8317
8348
  "valueType": "string",
8318
8349
  "inputType": "select",
8319
8350
  "enumValues": [
8320
- "Active",
8321
- "Developing",
8322
- "Paused",
8323
- "Retired"
8324
- ]
8351
+ "planning",
8352
+ "active",
8353
+ "paused",
8354
+ "completed",
8355
+ "cancelled"
8356
+ ],
8357
+ "constraints": {
8358
+ "defaultValue": "planning"
8359
+ }
8325
8360
  },
8326
8361
  {
8327
- "slug": "pillar-audience",
8328
- "label": "Audience Segment",
8362
+ "slug": "campaign-channel",
8363
+ "label": "Channel",
8329
8364
  "valueType": "string",
8330
- "inputType": "text",
8331
- "placeholder": "Who does this pillar speak to?"
8365
+ "inputType": "select",
8366
+ "enumValues": [
8367
+ "email",
8368
+ "social",
8369
+ "event",
8370
+ "content",
8371
+ "partnership",
8372
+ "paid",
8373
+ "organic",
8374
+ "other"
8375
+ ]
8332
8376
  },
8333
8377
  {
8334
- "slug": "pillar-goal",
8335
- "label": "Audience Goal",
8378
+ "slug": "campaign-goal",
8379
+ "label": "Goal",
8336
8380
  "valueType": "string",
8337
- "inputType": "text",
8338
- "placeholder": "What should the audience think, feel, or do after consuming this pillar?"
8381
+ "inputType": "textarea"
8339
8382
  },
8340
8383
  {
8341
- "slug": "pillar-formats",
8342
- "label": "Primary Formats",
8384
+ "slug": "campaign-target-audience",
8385
+ "label": "Target Audience",
8343
8386
  "valueType": "string",
8344
- "inputType": "select",
8345
- "enumValues": [
8346
- "Articles + Threads",
8347
- "Short Video",
8348
- "Long Video",
8349
- "Newsletter",
8350
- "Podcast",
8351
- "Carousel",
8352
- "Mixed"
8353
- ]
8387
+ "inputType": "textarea"
8354
8388
  },
8355
8389
  {
8356
- "slug": "post-count-pillar",
8357
- "label": "Total Posts Published",
8390
+ "slug": "campaign-start-date",
8391
+ "label": "Start Date",
8392
+ "valueType": "date",
8393
+ "inputType": "date"
8394
+ },
8395
+ {
8396
+ "slug": "campaign-end-date",
8397
+ "label": "End Date",
8398
+ "valueType": "date",
8399
+ "inputType": "date"
8400
+ },
8401
+ {
8402
+ "slug": "campaign-budget",
8403
+ "label": "Budget",
8358
8404
  "valueType": "number",
8359
8405
  "inputType": "number"
8360
8406
  },
8361
8407
  {
8362
- "slug": "avg-engagement",
8363
- "label": "Avg Engagement Score",
8408
+ "slug": "campaign-lead-count",
8409
+ "label": "Lead Count",
8364
8410
  "valueType": "number",
8365
8411
  "inputType": "number"
8366
8412
  },
8367
8413
  {
8368
- "slug": "top-post",
8369
- "label": "Top Performing Post",
8370
- "valueType": "string",
8371
- "inputType": "text",
8372
- "placeholder": "Title of best performing post in this pillar"
8414
+ "slug": "campaign-conversion-rate",
8415
+ "label": "Conversion Rate (%)",
8416
+ "valueType": "number",
8417
+ "inputType": "number"
8373
8418
  },
8374
8419
  {
8375
- "slug": "posting-frequency",
8376
- "label": "Target Frequency",
8420
+ "slug": "campaign-notes",
8421
+ "label": "Notes",
8377
8422
  "valueType": "string",
8378
- "inputType": "select",
8379
- "enumValues": [
8380
- "Daily",
8381
- "3x / week",
8382
- "2x / week",
8383
- "Weekly",
8384
- "Bi-weekly",
8385
- "Monthly",
8386
- "Ad hoc"
8387
- ]
8388
- },
8389
- {
8390
- "slug": "pillar-tags",
8391
- "label": "Tags",
8392
- "valueType": "array"
8423
+ "inputType": "textarea"
8393
8424
  }
8394
8425
  ]
8395
8426
  },
8396
8427
  {
8397
- "slug": "platform",
8398
- "displayName": "Platform",
8399
- "icon": "share-2",
8400
- "color": "#06B6D4",
8401
- "description": "A social account, newsletter publication, or podcast channel. Each platform has its own audience metrics and publishing rhythm.",
8402
- "scope": "WORKSPACE",
8428
+ "slug": "sponsor",
8429
+ "displayName": "Sponsor",
8430
+ "icon": "hand-coins",
8431
+ "color": "amber",
8432
+ "description": "A backer or sponsor of a program, round, or event.",
8433
+ "scope": "shared",
8434
+ "profileKind": "role",
8435
+ "applicableKinds": [
8436
+ "person",
8437
+ "company"
8438
+ ],
8403
8439
  "properties": [
8404
8440
  {
8405
- "slug": "platform-type",
8406
- "label": "Type",
8441
+ "slug": "sponsorStatus",
8442
+ "label": "Status",
8407
8443
  "valueType": "string",
8408
8444
  "inputType": "select",
8409
8445
  "enumValues": [
8410
- "LinkedIn",
8411
- "Instagram",
8412
- "TikTok",
8413
- "YouTube",
8414
- "Twitter / X",
8415
- "Threads",
8416
- "Bluesky",
8417
- "Newsletter",
8418
- "Podcast",
8419
- "Blog / Website",
8420
- "Other"
8446
+ "prospect",
8447
+ "active",
8448
+ "paused"
8421
8449
  ]
8422
8450
  },
8423
8451
  {
8424
- "slug": "platform-status",
8425
- "label": "Status",
8452
+ "slug": "sponsorType",
8453
+ "label": "Sponsor Type",
8454
+ "valueType": "string",
8455
+ "inputType": "text"
8456
+ },
8457
+ {
8458
+ "slug": "notes",
8459
+ "label": "Notes",
8460
+ "valueType": "string",
8461
+ "inputType": "textarea"
8462
+ }
8463
+ ]
8464
+ }
8465
+ ],
8466
+ "views": [
8467
+ {
8468
+ "name": "Posts",
8469
+ "slug": "content-posts",
8470
+ "type": "kanban",
8471
+ "scopeProfileSlug": "post",
8472
+ "groupBy": "post-status",
8473
+ "description": "Content posts by status."
8474
+ },
8475
+ {
8476
+ "name": "Pillars",
8477
+ "slug": "content-pillars",
8478
+ "type": "list",
8479
+ "scopeProfileSlug": "pillar",
8480
+ "description": "Content pillars — the recurring themes."
8481
+ },
8482
+ {
8483
+ "name": "Platforms",
8484
+ "slug": "content-platforms",
8485
+ "type": "table",
8486
+ "scopeProfileSlug": "platform",
8487
+ "description": "Channels and their audience metrics."
8488
+ },
8489
+ {
8490
+ "name": "Newsletters",
8491
+ "slug": "content-newsletters",
8492
+ "type": "kanban",
8493
+ "scopeProfileSlug": "newsletter",
8494
+ "groupBy": "newsletter-status",
8495
+ "description": "Newsletter issues by status."
8496
+ }
8497
+ ],
8498
+ "app": {
8499
+ "kind": "stored",
8500
+ "cellKey": "entity-detail"
8501
+ },
8502
+ "layout": {
8503
+ "pinnedApps": [
8504
+ "dashboard",
8505
+ "data"
8506
+ ],
8507
+ "defaultView": "Posts",
8508
+ "defaultApp": null,
8509
+ "sidebarItems": [
8510
+ {
8511
+ "kind": "view",
8512
+ "viewName": "Posts",
8513
+ "label": "Posts",
8514
+ "icon": "file-edit"
8515
+ },
8516
+ {
8517
+ "kind": "view",
8518
+ "viewName": "Pillars",
8519
+ "label": "Pillars",
8520
+ "icon": "columns"
8521
+ },
8522
+ {
8523
+ "kind": "view",
8524
+ "viewName": "Platforms",
8525
+ "label": "Platforms",
8526
+ "icon": "share-2"
8527
+ },
8528
+ {
8529
+ "kind": "view",
8530
+ "viewName": "Newsletters",
8531
+ "label": "Newsletters",
8532
+ "icon": "mail"
8533
+ }
8534
+ ]
8535
+ },
8536
+ "bento": {
8537
+ "viewName": "Posts",
8538
+ "blocks": [
8539
+ {
8540
+ "kind": "view",
8541
+ "viewName": "Pillars",
8542
+ "pos": {
8543
+ "x": 0,
8544
+ "y": 0,
8545
+ "w": 6,
8546
+ "h": 5
8547
+ }
8548
+ },
8549
+ {
8550
+ "kind": "view",
8551
+ "viewName": "Newsletters",
8552
+ "pos": {
8553
+ "x": 6,
8554
+ "y": 0,
8555
+ "w": 6,
8556
+ "h": 5
8557
+ }
8558
+ }
8559
+ ]
8560
+ },
8561
+ "entityLinks": [
8562
+ {
8563
+ "sourceProfileSlug": "post",
8564
+ "targetProfileSlug": "campaign",
8565
+ "type": "part_of_campaign",
8566
+ "label": "Campaign"
8567
+ },
8568
+ {
8569
+ "sourceProfileSlug": "post",
8570
+ "targetProfileSlug": "pillar",
8571
+ "type": "belongs_to_pillar",
8572
+ "label": "Pillar"
8573
+ },
8574
+ {
8575
+ "sourceProfileSlug": "post",
8576
+ "targetProfileSlug": "sponsor",
8577
+ "type": "sponsored_by",
8578
+ "label": "Sponsor"
8579
+ }
8580
+ ],
8581
+ "playbooks": [
8582
+ {
8583
+ "name": "Produce Content",
8584
+ "description": "Take a captured post idea and carry it from spark to a scheduled, platform-ready draft.",
8585
+ "goalTemplate": "Produce content for {platform} from this idea ({post}). Take the raw idea, shape it into a {format} draft with a scroll-stopping hook and a clear CTA, keep it aligned to the post's pillar and the operator's brand voice, then move it to Scheduled with a publish date.",
8586
+ "subjectProfile": {
8587
+ "profileSlug": "post"
8588
+ },
8589
+ "params": [
8590
+ {
8591
+ "name": "post",
8592
+ "type": "entity",
8593
+ "label": "Post",
8594
+ "required": true
8595
+ },
8596
+ {
8597
+ "name": "platform",
8598
+ "type": "text",
8599
+ "label": "Platform",
8600
+ "required": true
8601
+ },
8602
+ {
8603
+ "name": "format",
8604
+ "type": "text",
8605
+ "label": "Format"
8606
+ }
8607
+ ],
8608
+ "executor": "is-agent",
8609
+ "status": "active"
8610
+ }
8611
+ ],
8612
+ "onboarding": {
8613
+ "goal": "Stand up the editorial engine — the pillars you're known for, the platforms you publish on, the cadence you can actually sustain, and a first post placed in the system — so the workspace mirrors how you turn thinking into published content, not a blank calendar.\n",
8614
+ "framing": "THE EDITOR-IN-CHIEF: Act as a seasoned content strategist who has grown owned audiences from zero. Anchor everything on PILLARS — the two-to-four recurring themes an audience comes to you for — because pillars are what make a content engine compound instead of drift. Pull voice and identity from Brand and the target audience from Foundation so every piece lands on-strategy. Push for a cadence they can hold for a year, not a heroic month. Be concrete: real platforms, real formats, a real first post — a fuzzy \"I'll post more\" helps no one.\n",
8615
+ "expertise": {
8616
+ "starters": [
8617
+ "Pillars before posts. A creator known for 2–4 clear themes compounds; one posting about everything stays noise. Propose naming the pillars FIRST — each with the audience it speaks to and the transformation it delivers — then hang every post off one of them.\n",
8618
+ "Cadence you can sustain beats cadence that impresses. A weekly post held for a year outperforms daily-for-three-weeks-then-silence. Propose a realistic per-platform frequency and let the calendar enforce it, rather than an ambitious number that collapses.\n",
8619
+ "One idea, many formats — design for repurposing from the start. A single strong thought becomes a thread, a short video, a newsletter section, and a carousel. Propose the repurpose chain up front so one capture yields a week of output, tracked via `repurposed-from`.\n"
8620
+ ],
8621
+ "blindSpots": [
8622
+ "No pillars = brand drift. If they list a dozen post ideas but can't name the 2–4 themes underneath, that's the gap — surface it before filling the calendar, because unpillared posting never builds an identity.\n",
8623
+ "The owned-audience channel is the one most creators under-invest in. If they're all-in on algorithmic platforms with no newsletter or list, name it: the newsletter is the audience they actually own when a platform changes the rules.\n",
8624
+ "Chasing every platform at once guarantees all of them stay shallow. If they name five channels, push back: which ONE or two get real cadence and attention now, and which are experiments?\n"
8625
+ ],
8626
+ "bar": "The workspace reads like a running publication: a handful of named pillars each tied to an audience, the platforms actually committed to with a sustainable cadence, an owned newsletter channel, and a first post placed in a pillar — so a strategist could see at a glance what the brand is about, where it publishes, and what ships next.\n"
8627
+ },
8628
+ "collect": [
8629
+ {
8630
+ "profileSlug": "pillar",
8631
+ "what": "The recurring themes you're known for — the 2–4 lenses your audience comes to you for, each with the segment it speaks to and the goal it serves.",
8632
+ "cardinality": "few",
8633
+ "keyFields": [
8634
+ "pillar-status",
8635
+ "pillar-audience",
8636
+ "pillar-formats"
8637
+ ]
8638
+ },
8639
+ {
8640
+ "profileSlug": "platform",
8641
+ "what": "The channels you actually publish on — the social accounts, newsletter, or podcast — with their status and the cadence you can hold.",
8642
+ "cardinality": "several",
8643
+ "keyFields": [
8644
+ "platform-type",
8645
+ "platform-status",
8646
+ "platform-posting-freq"
8647
+ ]
8648
+ },
8649
+ {
8650
+ "profileSlug": "post",
8651
+ "what": "A first post or two already in motion, each placed on a pillar and a platform at its true status (Idea through Published).",
8652
+ "cardinality": "few",
8653
+ "keyFields": [
8654
+ "post-status",
8655
+ "post-format",
8656
+ "post-platform"
8657
+ ]
8658
+ }
8659
+ ],
8660
+ "openingQuestions": [
8661
+ "What are the 2–4 themes your audience comes to you for — the pillars everything you make ties back to?",
8662
+ "Which platforms do you actually publish on, and what cadence can you genuinely sustain on each?",
8663
+ "Do you run (or want) a newsletter — the audience you own outright — and what's the first post you'd place in the system?"
8664
+ ],
8665
+ "doneWhen": "at least one pillar + one platform with a cadence + a first post placed on a pillar."
8666
+ }
8667
+ },
8668
+ "content-studio": {
8669
+ "meta": {
8670
+ "slug": "content-studio",
8671
+ "name": "Content Studio",
8672
+ "description": "HyperFrames + Remotion video pipeline — script, design, compose, render, publish.",
8673
+ "icon": "clapperboard",
8674
+ "color": "violet",
8675
+ "tags": [
8676
+ "content",
8677
+ "video",
8678
+ "creation",
8679
+ "pipeline"
8680
+ ],
8681
+ "isPublic": true
8682
+ },
8683
+ "workspace": {
8684
+ "name": "Content Studio",
8685
+ "description": "Content creation pipeline — HyperFrames for rapid design, Remotion for production rendering. Create videos, carousels, reels, and social content from one workspace.\n",
8686
+ "proposalId": "content-studio-v1",
8687
+ "subtype": "content-studio",
8688
+ "visibility": "pod_visible",
8689
+ "capabilities": [
8690
+ "content.pipeline",
8691
+ "content.compose",
8692
+ "content.render",
8693
+ "content.assets",
8694
+ "content.templates"
8695
+ ],
8696
+ "sourceRoles": {
8697
+ "brand": "consumer",
8698
+ "content": "provider"
8699
+ }
8700
+ },
8701
+ "profiles": [
8702
+ {
8703
+ "slug": "content-pipeline",
8704
+ "displayName": "Pipeline",
8705
+ "icon": "workflow",
8706
+ "color": "violet",
8707
+ "description": "A content creation pipeline: script → design → compose → render.",
8708
+ "semanticSlug": "content.pipeline",
8709
+ "properties": [
8710
+ {
8711
+ "slug": "pipeline-kind",
8712
+ "label": "Kind",
8426
8713
  "valueType": "string",
8427
8714
  "inputType": "select",
8428
8715
  "enumValues": [
8429
- "Active",
8430
- "Building",
8431
- "Maintenance Mode",
8432
- "Inactive"
8433
- ]
8716
+ "reel",
8717
+ "carousel",
8718
+ "demo",
8719
+ "explainer",
8720
+ "custom"
8721
+ ],
8722
+ "constraints": {
8723
+ "defaultValue": "reel"
8724
+ }
8434
8725
  },
8435
8726
  {
8436
- "slug": "platform-url",
8437
- "label": "Profile URL",
8727
+ "slug": "pipeline-platform",
8728
+ "label": "Platform",
8438
8729
  "valueType": "string",
8439
- "inputType": "text",
8440
- "placeholder": "https://...",
8730
+ "inputType": "select",
8731
+ "enumValues": [
8732
+ "instagram",
8733
+ "tiktok",
8734
+ "youtube",
8735
+ "linkedin",
8736
+ "x",
8737
+ "all"
8738
+ ],
8441
8739
  "constraints": {
8442
- "format": "url"
8740
+ "defaultValue": "instagram"
8443
8741
  }
8444
8742
  },
8445
8743
  {
8446
- "slug": "follower-count",
8447
- "label": "Follower / Subscriber Count",
8448
- "valueType": "number",
8449
- "inputType": "number"
8744
+ "slug": "pipeline-mode",
8745
+ "label": "Mode",
8746
+ "valueType": "string",
8747
+ "inputType": "select",
8748
+ "enumValues": [
8749
+ "fast",
8750
+ "quality",
8751
+ "data"
8752
+ ],
8753
+ "constraints": {
8754
+ "defaultValue": "quality"
8755
+ }
8450
8756
  },
8451
8757
  {
8452
- "slug": "follower-target",
8453
- "label": "Target Count",
8454
- "valueType": "number",
8455
- "inputType": "number"
8758
+ "slug": "pipeline-script",
8759
+ "label": "Script",
8760
+ "valueType": "string",
8761
+ "inputType": "textarea"
8456
8762
  },
8457
8763
  {
8458
- "slug": "avg-engagement-rate",
8459
- "label": "Avg Engagement Rate (%)",
8764
+ "slug": "pipeline-stages",
8765
+ "label": "Stages",
8766
+ "valueType": "string",
8767
+ "inputType": "textarea"
8768
+ }
8769
+ ]
8770
+ },
8771
+ {
8772
+ "slug": "content-composition",
8773
+ "displayName": "Composition",
8774
+ "icon": "clapperboard",
8775
+ "color": "blue",
8776
+ "description": "A Remotion composition or HyperFrames sequence ready for rendering.",
8777
+ "semanticSlug": "content.composition",
8778
+ "properties": [
8779
+ {
8780
+ "slug": "composition-id",
8781
+ "label": "Composition ID",
8782
+ "valueType": "string",
8783
+ "inputType": "text"
8784
+ },
8785
+ {
8786
+ "slug": "aspect-ratio",
8787
+ "label": "Aspect Ratio",
8788
+ "valueType": "string",
8789
+ "inputType": "select",
8790
+ "enumValues": [
8791
+ "9:16",
8792
+ "16:9",
8793
+ "1:1",
8794
+ "4:5"
8795
+ ],
8796
+ "constraints": {
8797
+ "defaultValue": "16:9"
8798
+ }
8799
+ },
8800
+ {
8801
+ "slug": "duration-seconds",
8802
+ "label": "Duration (seconds)",
8460
8803
  "valueType": "number",
8461
8804
  "inputType": "number"
8462
8805
  },
8463
8806
  {
8464
- "slug": "platform-posting-freq",
8465
- "label": "Posting Frequency",
8807
+ "slug": "hyperframes-meta",
8808
+ "label": "HyperFrames JSON",
8809
+ "valueType": "string",
8810
+ "inputType": "textarea"
8811
+ },
8812
+ {
8813
+ "slug": "template-id",
8814
+ "label": "Template",
8815
+ "valueType": "string",
8816
+ "inputType": "text"
8817
+ },
8818
+ {
8819
+ "slug": "pipeline-ref",
8820
+ "label": "Pipeline",
8821
+ "valueType": "string",
8822
+ "inputType": "text"
8823
+ }
8824
+ ]
8825
+ },
8826
+ {
8827
+ "slug": "content-asset",
8828
+ "displayName": "Asset",
8829
+ "icon": "image",
8830
+ "color": "green",
8831
+ "description": "Media asset: image, video clip, audio track, font, or script.",
8832
+ "semanticSlug": "content.asset",
8833
+ "properties": [
8834
+ {
8835
+ "slug": "asset-kind",
8836
+ "label": "Kind",
8837
+ "valueType": "string",
8838
+ "inputType": "select",
8839
+ "enumValues": [
8840
+ "image",
8841
+ "video",
8842
+ "audio",
8843
+ "font",
8844
+ "script",
8845
+ "other"
8846
+ ]
8847
+ },
8848
+ {
8849
+ "slug": "source-kind",
8850
+ "label": "Source",
8466
8851
  "valueType": "string",
8467
8852
  "inputType": "select",
8468
8853
  "enumValues": [
8469
- "Daily",
8470
- "3x / week",
8471
- "2x / week",
8472
- "Weekly",
8473
- "Bi-weekly",
8474
- "Monthly",
8475
- "As Needed"
8476
- ]
8854
+ "uploaded",
8855
+ "brand",
8856
+ "generated"
8857
+ ],
8858
+ "constraints": {
8859
+ "defaultValue": "uploaded"
8860
+ }
8477
8861
  },
8478
8862
  {
8479
- "slug": "last-post-date",
8480
- "label": "Last Post Date",
8481
- "valueType": "date"
8863
+ "slug": "source-url",
8864
+ "label": "URL",
8865
+ "valueType": "string",
8866
+ "inputType": "url"
8482
8867
  },
8483
8868
  {
8484
- "slug": "platform-notes",
8485
- "label": "Notes",
8869
+ "slug": "brand-asset-ref",
8870
+ "label": "Brand Asset Ref",
8486
8871
  "valueType": "string",
8487
- "inputType": "text",
8488
- "placeholder": "What works here? Tone, format, best times..."
8872
+ "inputType": "text"
8489
8873
  },
8490
8874
  {
8491
- "slug": "platform-tags",
8492
- "label": "Tags",
8493
- "valueType": "array"
8875
+ "slug": "file-id",
8876
+ "label": "File ID",
8877
+ "valueType": "string",
8878
+ "inputType": "text"
8879
+ },
8880
+ {
8881
+ "slug": "document-id",
8882
+ "label": "Document ID",
8883
+ "valueType": "string",
8884
+ "inputType": "text"
8494
8885
  }
8495
8886
  ]
8496
8887
  },
8497
8888
  {
8498
- "slug": "newsletter",
8499
- "displayName": "Newsletter",
8500
- "icon": "mail",
8501
- "color": "#10B981",
8502
- "description": "A newsletter issue — your direct channel to an owned audience. No algorithm, no platform fee, no intermediary.",
8503
- "scope": "WORKSPACE",
8889
+ "slug": "render-job",
8890
+ "displayName": "Render Job",
8891
+ "icon": "play",
8892
+ "color": "amber",
8893
+ "description": "A render execution — queued, rendering, done, or failed.",
8894
+ "semanticSlug": "content.render",
8504
8895
  "properties": [
8505
8896
  {
8506
- "slug": "newsletter-status",
8897
+ "slug": "job-status",
8507
8898
  "label": "Status",
8508
8899
  "valueType": "string",
8509
8900
  "inputType": "select",
8510
8901
  "enumValues": [
8511
- "Idea",
8512
- "Drafting",
8513
- "Editing",
8514
- "Scheduled",
8515
- "Sent",
8516
- "Archived"
8517
- ]
8518
- },
8519
- {
8520
- "slug": "newsletter-series",
8521
- "label": "Series",
8522
- "valueType": "string",
8523
- "inputType": "text",
8524
- "placeholder": "Which newsletter series is this issue part of?"
8525
- },
8526
- {
8527
- "slug": "issue-number",
8528
- "label": "Issue Number",
8529
- "valueType": "number",
8530
- "inputType": "number"
8902
+ "queued",
8903
+ "rendering",
8904
+ "done",
8905
+ "failed"
8906
+ ],
8907
+ "constraints": {
8908
+ "defaultValue": "queued"
8909
+ }
8531
8910
  },
8532
8911
  {
8533
- "slug": "subject-line",
8534
- "label": "Subject Line",
8912
+ "slug": "output-format",
8913
+ "label": "Format",
8535
8914
  "valueType": "string",
8536
- "inputType": "text",
8537
- "placeholder": "The subject line — your most important copy"
8915
+ "inputType": "select",
8916
+ "enumValues": [
8917
+ "mp4",
8918
+ "gif",
8919
+ "webm",
8920
+ "mp3"
8921
+ ],
8922
+ "constraints": {
8923
+ "defaultValue": "mp4"
8924
+ }
8538
8925
  },
8539
8926
  {
8540
- "slug": "preview-text",
8541
- "label": "Preview Text",
8927
+ "slug": "output-url",
8928
+ "label": "Output URL",
8542
8929
  "valueType": "string",
8543
- "inputType": "text",
8544
- "placeholder": "45-character preview shown in inbox (after subject)"
8545
- },
8546
- {
8547
- "slug": "send-date",
8548
- "label": "Send Date",
8549
- "valueType": "date"
8930
+ "inputType": "url"
8550
8931
  },
8551
8932
  {
8552
- "slug": "subscriber-count",
8553
- "label": "Subscriber Count at Send",
8933
+ "slug": "render-duration-ms",
8934
+ "label": "Render Duration (ms)",
8554
8935
  "valueType": "number",
8555
8936
  "inputType": "number"
8556
8937
  },
8557
8938
  {
8558
- "slug": "open-rate",
8559
- "label": "Open Rate (%)",
8560
- "valueType": "number",
8561
- "inputType": "number"
8939
+ "slug": "error-message",
8940
+ "label": "Error",
8941
+ "valueType": "string",
8942
+ "inputType": "textarea"
8562
8943
  },
8563
8944
  {
8564
- "slug": "click-rate",
8565
- "label": "Click Rate (%)",
8566
- "valueType": "number",
8567
- "inputType": "number"
8568
- },
8945
+ "slug": "composition-ref",
8946
+ "label": "Composition",
8947
+ "valueType": "string",
8948
+ "inputType": "text"
8949
+ }
8950
+ ]
8951
+ },
8952
+ {
8953
+ "slug": "content-template",
8954
+ "displayName": "Template",
8955
+ "icon": "layout-template",
8956
+ "color": "pink",
8957
+ "description": "Reusable video template — HyperFrames, Remotion, or hybrid.",
8958
+ "semanticSlug": "content.template",
8959
+ "properties": [
8569
8960
  {
8570
- "slug": "newsletter-sponsor",
8571
- "label": "Sponsor",
8572
- "valueType": "entity_id"
8961
+ "slug": "template-kind",
8962
+ "label": "Kind",
8963
+ "valueType": "string",
8964
+ "inputType": "select",
8965
+ "enumValues": [
8966
+ "hyperframes",
8967
+ "remotion",
8968
+ "hybrid"
8969
+ ],
8970
+ "constraints": {
8971
+ "defaultValue": "hyperframes"
8972
+ }
8573
8973
  },
8574
8974
  {
8575
- "slug": "newsletter-campaign",
8576
- "label": "Campaign",
8577
- "valueType": "entity_id"
8975
+ "slug": "aspect-ratio",
8976
+ "label": "Aspect Ratio",
8977
+ "valueType": "string",
8978
+ "inputType": "select",
8979
+ "enumValues": [
8980
+ "9:16",
8981
+ "16:9",
8982
+ "1:1",
8983
+ "4:5"
8984
+ ],
8985
+ "constraints": {
8986
+ "defaultValue": "16:9"
8987
+ }
8578
8988
  },
8579
8989
  {
8580
- "slug": "newsletter-pillar",
8581
- "label": "Primary Pillar",
8582
- "valueType": "entity_id"
8990
+ "slug": "template-status",
8991
+ "label": "Status",
8992
+ "valueType": "string",
8993
+ "inputType": "select",
8994
+ "enumValues": [
8995
+ "draft",
8996
+ "approved",
8997
+ "deprecated"
8998
+ ],
8999
+ "constraints": {
9000
+ "defaultValue": "approved"
9001
+ }
8583
9002
  },
8584
9003
  {
8585
- "slug": "newsletter-tags",
8586
- "label": "Tags",
8587
- "valueType": "array"
9004
+ "slug": "template-config",
9005
+ "label": "Config JSON",
9006
+ "valueType": "string",
9007
+ "inputType": "textarea"
8588
9008
  }
8589
9009
  ]
8590
9010
  }
@@ -8624,36 +9044,6 @@ const DATA = {
8624
9044
  "type": "grid",
8625
9045
  "scopeProfileSlug": "content-template",
8626
9046
  "description": "Reusable video templates."
8627
- },
8628
- {
8629
- "name": "Posts",
8630
- "slug": "content-posts",
8631
- "type": "kanban",
8632
- "scopeProfileSlug": "post",
8633
- "groupBy": "post-status",
8634
- "description": "Content posts by status."
8635
- },
8636
- {
8637
- "name": "Pillars",
8638
- "slug": "content-pillars",
8639
- "type": "list",
8640
- "scopeProfileSlug": "pillar",
8641
- "description": "Content pillars — the recurring themes."
8642
- },
8643
- {
8644
- "name": "Platforms",
8645
- "slug": "content-platforms",
8646
- "type": "table",
8647
- "scopeProfileSlug": "platform",
8648
- "description": "Channels and their audience metrics."
8649
- },
8650
- {
8651
- "name": "Newsletters",
8652
- "slug": "content-newsletters",
8653
- "type": "kanban",
8654
- "scopeProfileSlug": "newsletter",
8655
- "groupBy": "newsletter-status",
8656
- "description": "Newsletter issues by status."
8657
9047
  }
8658
9048
  ],
8659
9049
  "app": {
@@ -8694,50 +9084,26 @@ const DATA = {
8694
9084
  {
8695
9085
  "kind": "view",
8696
9086
  "viewName": "Compositions",
8697
- "label": "Compositions",
8698
- "icon": "clapperboard"
8699
- },
8700
- {
8701
- "kind": "view",
8702
- "viewName": "Assets",
8703
- "label": "Assets",
8704
- "icon": "image"
8705
- },
8706
- {
8707
- "kind": "view",
8708
- "viewName": "Render Jobs",
8709
- "label": "Renders",
8710
- "icon": "play"
8711
- },
8712
- {
8713
- "kind": "view",
8714
- "viewName": "Templates",
8715
- "label": "Templates",
8716
- "icon": "layout-template"
8717
- },
8718
- {
8719
- "kind": "view",
8720
- "viewName": "Posts",
8721
- "label": "Posts",
8722
- "icon": "file-edit"
9087
+ "label": "Compositions",
9088
+ "icon": "clapperboard"
8723
9089
  },
8724
9090
  {
8725
9091
  "kind": "view",
8726
- "viewName": "Pillars",
8727
- "label": "Pillars",
8728
- "icon": "columns"
9092
+ "viewName": "Assets",
9093
+ "label": "Assets",
9094
+ "icon": "image"
8729
9095
  },
8730
9096
  {
8731
9097
  "kind": "view",
8732
- "viewName": "Platforms",
8733
- "label": "Platforms",
8734
- "icon": "share-2"
9098
+ "viewName": "Render Jobs",
9099
+ "label": "Renders",
9100
+ "icon": "play"
8735
9101
  },
8736
9102
  {
8737
9103
  "kind": "view",
8738
- "viewName": "Newsletters",
8739
- "label": "Newsletters",
8740
- "icon": "mail"
9104
+ "viewName": "Templates",
9105
+ "label": "Templates",
9106
+ "icon": "layout-template"
8741
9107
  }
8742
9108
  ]
8743
9109
  },
@@ -9108,6 +9474,248 @@ const DATA = {
9108
9474
  ]
9109
9475
  }
9110
9476
  ]
9477
+ },
9478
+ {
9479
+ "slug": "client",
9480
+ "displayName": "Client",
9481
+ "icon": "briefcase",
9482
+ "color": "emerald",
9483
+ "description": "An active commercial relationship — created when a deal is won.",
9484
+ "scope": "shared",
9485
+ "profileKind": "role",
9486
+ "applicableKinds": [
9487
+ "company",
9488
+ "person"
9489
+ ],
9490
+ "properties": [
9491
+ {
9492
+ "slug": "clientStatus",
9493
+ "label": "Status",
9494
+ "valueType": "string",
9495
+ "inputType": "select",
9496
+ "enumValues": [
9497
+ "prospect",
9498
+ "active",
9499
+ "paused",
9500
+ "former",
9501
+ "churned"
9502
+ ]
9503
+ },
9504
+ {
9505
+ "slug": "accountManager",
9506
+ "label": "Account Manager",
9507
+ "valueType": "string",
9508
+ "inputType": "text"
9509
+ },
9510
+ {
9511
+ "slug": "engagementStartDate",
9512
+ "label": "Engagement Start",
9513
+ "valueType": "date",
9514
+ "inputType": "date"
9515
+ },
9516
+ {
9517
+ "slug": "satisfactionScore",
9518
+ "label": "Satisfaction",
9519
+ "valueType": "number",
9520
+ "inputType": "number"
9521
+ },
9522
+ {
9523
+ "slug": "lifetimeValue",
9524
+ "label": "Lifetime Value",
9525
+ "valueType": "number",
9526
+ "inputType": "number"
9527
+ },
9528
+ {
9529
+ "slug": "notes",
9530
+ "label": "Notes",
9531
+ "valueType": "string",
9532
+ "inputType": "textarea"
9533
+ },
9534
+ {
9535
+ "slug": "contractValue",
9536
+ "label": "Contract Value",
9537
+ "valueType": "number",
9538
+ "inputType": "number"
9539
+ },
9540
+ {
9541
+ "slug": "renewalDate",
9542
+ "label": "Renewal Date",
9543
+ "valueType": "date",
9544
+ "inputType": "date"
9545
+ },
9546
+ {
9547
+ "slug": "healthScore",
9548
+ "label": "Health",
9549
+ "valueType": "string",
9550
+ "inputType": "select",
9551
+ "enumValues": [
9552
+ "healthy",
9553
+ "at_risk",
9554
+ "critical"
9555
+ ]
9556
+ }
9557
+ ]
9558
+ },
9559
+ {
9560
+ "slug": "partner",
9561
+ "displayName": "Partner",
9562
+ "icon": "handshake",
9563
+ "color": "teal",
9564
+ "description": "A partner relationship — both a referral source and a co-delivery collaborator, distinguished by partner type.",
9565
+ "scope": "shared",
9566
+ "profileKind": "role",
9567
+ "applicableKinds": [
9568
+ "company",
9569
+ "person"
9570
+ ],
9571
+ "properties": [
9572
+ {
9573
+ "slug": "partnerStatus",
9574
+ "label": "Status",
9575
+ "valueType": "string",
9576
+ "inputType": "select",
9577
+ "enumValues": [
9578
+ "prospect",
9579
+ "active",
9580
+ "paused",
9581
+ "churned"
9582
+ ]
9583
+ },
9584
+ {
9585
+ "slug": "partnerType",
9586
+ "label": "Partner Type",
9587
+ "valueType": "string",
9588
+ "inputType": "select",
9589
+ "enumValues": [
9590
+ "referral",
9591
+ "co-delivery",
9592
+ "both"
9593
+ ]
9594
+ },
9595
+ {
9596
+ "slug": "accountManager",
9597
+ "label": "Account Manager",
9598
+ "valueType": "string",
9599
+ "inputType": "text"
9600
+ },
9601
+ {
9602
+ "slug": "engagementStartDate",
9603
+ "label": "Engagement Start",
9604
+ "valueType": "date",
9605
+ "inputType": "date"
9606
+ },
9607
+ {
9608
+ "slug": "satisfactionScore",
9609
+ "label": "Satisfaction",
9610
+ "valueType": "number",
9611
+ "inputType": "number"
9612
+ },
9613
+ {
9614
+ "slug": "lifetimeValue",
9615
+ "label": "Lifetime Value",
9616
+ "valueType": "number",
9617
+ "inputType": "number"
9618
+ },
9619
+ {
9620
+ "slug": "notes",
9621
+ "label": "Notes",
9622
+ "valueType": "string",
9623
+ "inputType": "textarea"
9624
+ },
9625
+ {
9626
+ "slug": "contractValue",
9627
+ "label": "Contract Value",
9628
+ "valueType": "number",
9629
+ "inputType": "number"
9630
+ },
9631
+ {
9632
+ "slug": "renewalDate",
9633
+ "label": "Renewal Date",
9634
+ "valueType": "date",
9635
+ "inputType": "date"
9636
+ },
9637
+ {
9638
+ "slug": "healthScore",
9639
+ "label": "Health",
9640
+ "valueType": "string",
9641
+ "inputType": "select",
9642
+ "enumValues": [
9643
+ "healthy",
9644
+ "at_risk",
9645
+ "critical"
9646
+ ]
9647
+ }
9648
+ ]
9649
+ },
9650
+ {
9651
+ "slug": "lead",
9652
+ "displayName": "Lead",
9653
+ "icon": "user-plus",
9654
+ "color": "yellow",
9655
+ "description": "An early-pipeline prospect — not yet a client, being qualified or nurtured.",
9656
+ "scope": "shared",
9657
+ "profileKind": "role",
9658
+ "applicableKinds": [
9659
+ "company",
9660
+ "person"
9661
+ ],
9662
+ "properties": [
9663
+ {
9664
+ "slug": "leadStage",
9665
+ "label": "Stage",
9666
+ "valueType": "string",
9667
+ "inputType": "select",
9668
+ "enumValues": [
9669
+ "prospect",
9670
+ "qualified",
9671
+ "nurturing",
9672
+ "converted",
9673
+ "lost"
9674
+ ],
9675
+ "constraints": {
9676
+ "defaultValue": "prospect"
9677
+ }
9678
+ },
9679
+ {
9680
+ "slug": "notes",
9681
+ "label": "Notes",
9682
+ "valueType": "string",
9683
+ "inputType": "textarea"
9684
+ }
9685
+ ]
9686
+ },
9687
+ {
9688
+ "slug": "churned",
9689
+ "displayName": "Churned",
9690
+ "icon": "user-x",
9691
+ "color": "gray",
9692
+ "description": "A relationship (client, partner, or otherwise) that was active and has since ended.",
9693
+ "scope": "shared",
9694
+ "profileKind": "role",
9695
+ "applicableKinds": [
9696
+ "company",
9697
+ "person"
9698
+ ],
9699
+ "properties": [
9700
+ {
9701
+ "slug": "churnedDate",
9702
+ "label": "Churned Date",
9703
+ "valueType": "date",
9704
+ "inputType": "date"
9705
+ },
9706
+ {
9707
+ "slug": "churnReason",
9708
+ "label": "Reason",
9709
+ "valueType": "string",
9710
+ "inputType": "textarea"
9711
+ },
9712
+ {
9713
+ "slug": "notes",
9714
+ "label": "Notes",
9715
+ "valueType": "string",
9716
+ "inputType": "textarea"
9717
+ }
9718
+ ]
9111
9719
  }
9112
9720
  ],
9113
9721
  "entityLinks": [
@@ -11362,70 +11970,369 @@ const DATA = {
11362
11970
  "label": "Shapes"
11363
11971
  },
11364
11972
  {
11365
- "sourceProfileSlug": "ecosystem-event",
11366
- "targetProfileSlug": "company",
11367
- "type": "involves",
11368
- "label": "Involves"
11973
+ "sourceProfileSlug": "ecosystem-event",
11974
+ "targetProfileSlug": "company",
11975
+ "type": "involves",
11976
+ "label": "Involves"
11977
+ }
11978
+ ],
11979
+ "playbooks": [
11980
+ {
11981
+ "name": "Research Competitor",
11982
+ "description": "Deep-research a competitor and position it against us — strengths, weaknesses, pricing, and the gaps we can exploit.",
11983
+ "goalTemplate": "Research this competitor ({competitor}) and compare them to us. Investigate their {focus}: positioning, strengths, weaknesses, pricing, and recent moves. Use the provided company context where relevant: {companyContext}. Produce: {outputTypes}. Update the competitor entity with what you find and make clear where we win and where we are exposed.",
11984
+ "subjectProfile": {
11985
+ "profileSlug": "competitor"
11986
+ },
11987
+ "params": [
11988
+ {
11989
+ "name": "competitor",
11990
+ "type": "entity",
11991
+ "label": "Competitor",
11992
+ "required": true
11993
+ },
11994
+ {
11995
+ "name": "focus",
11996
+ "type": "text",
11997
+ "label": "Focus area",
11998
+ "defaultValue": "product, pricing, and positioning"
11999
+ },
12000
+ {
12001
+ "name": "companyContext",
12002
+ "type": "text",
12003
+ "label": "Our company context"
12004
+ },
12005
+ {
12006
+ "name": "outputTypes",
12007
+ "type": "text",
12008
+ "label": "Outputs",
12009
+ "defaultValue": "a head-to-head comparison summary and an updated competitor profile"
12010
+ }
12011
+ ],
12012
+ "executor": "is-agent",
12013
+ "grants": [
12014
+ "Web Search",
12015
+ "Entity Creator"
12016
+ ],
12017
+ "status": "active"
12018
+ }
12019
+ ],
12020
+ "onboarding": {
12021
+ "goal": "Map the real ecosystem — the key players (companies and people), who partners and competes with whom, and the segments and trends that matter — so strategy is grounded in the actual market, not a vague \"the market\".\n",
12022
+ "framing": "THE ECOSYSTEM LEAD: Act as a sharp ecosystem lead who maps the market\nlandscape AND the relationships inside it. Push for REAL named players — not\n\"the incumbents\", but the actual companies — and for the concrete edges\nbetween them: who partners with whom, who competes, who invested in whom.\nA map with no edges is just a list; the value is in the relationships.\n",
12023
+ "expertise": {
12024
+ "starters": [
12025
+ "Name the actors, then draw the edges. A list of logos tells strategy nothing; the market is a GRAPH. For every company you log, propose at least one real relationship — partners_with, competes_with, invested_in, integrates_with — because the edges are where the leverage and the threats live.\n",
12026
+ "Map the CATEGORY, not just named rivals. Buyers compare across tiers: direct competitors, adjacent tools that solve the same job differently, and the status quo (\"a spreadsheet\", \"do nothing\"). Attach the competitor role to real companies and place each one in the segment it competes in.\n",
12027
+ "Separate players from structure. Companies and people are the ACTORS; segments and trends are the STRUCTURE they move within. Anchor each trend to a direction and a \"so what for us\", and each segment to a rough size and ocean — an untimed \"AI is big\" tells strategy nothing.\n"
12028
+ ],
12029
+ "blindSpots": [
12030
+ "\"We have no competitors\" is a red flag, not a moat — it usually means the category is undefined or the buyer's real alternative (a manual workaround) hasn't been named. Push to name what a buyer does TODAY instead of buying.\n",
12031
+ "Founders over-watch the loud incumbent and miss the fast-moving insurgent one tier down, and they log companies with no relationships at all. Surface the insurgents, and force at least one real edge per key player.\n",
12032
+ "A trend or event with no stance is just a headline. Every trend needs a direction (rising/steady/fading) and a \"so what\"; every logged event needs an actor and an impact. Force the meaning, not just the mention.\n"
12033
+ ],
12034
+ "bar": "The map reads like a real ecosystem: named companies placed in their segments, real edges between them (who partners, competes, invested), and each trend carrying a direction and a \"so what\" — so a strategist can see the alliances, the threats, and the open lane, not just a pile of logos.\n"
12035
+ },
12036
+ "collect": [
12037
+ {
12038
+ "profileSlug": "company",
12039
+ "what": "The real companies in your ecosystem — the players you operate around.",
12040
+ "cardinality": "several",
12041
+ "keyFields": [
12042
+ "industry",
12043
+ "website"
12044
+ ]
12045
+ },
12046
+ {
12047
+ "profileSlug": "market-segment",
12048
+ "what": "The market slices you play in, with rough size and ocean.",
12049
+ "cardinality": "few",
12050
+ "keyFields": [
12051
+ "ocean",
12052
+ "tam"
12053
+ ]
12054
+ },
12055
+ {
12056
+ "profileSlug": "trend",
12057
+ "what": "Directional shifts in tech, market, or behavior that affect you.",
12058
+ "cardinality": "few",
12059
+ "keyFields": [
12060
+ "direction",
12061
+ "relevance"
12062
+ ]
12063
+ }
12064
+ ],
12065
+ "openingQuestions": [
12066
+ "Who are the key players in your space — the 3-5 companies that matter most?",
12067
+ "How do they relate — who partners with, competes with, or invested in whom?",
12068
+ "Which market segment matters most right now, and what trend is reshaping it?"
12069
+ ],
12070
+ "doneWhen": "A few companies captured, with at least one relationship edge between them, plus one market segment."
12071
+ },
12072
+ "app": {
12073
+ "kind": "stored",
12074
+ "cellKey": "entity-detail"
12075
+ },
12076
+ "layout": {
12077
+ "defaultView": "Ecosystem Map",
12078
+ "defaultApp": null,
12079
+ "pinnedApps": [
12080
+ "dashboard",
12081
+ "data"
12082
+ ],
12083
+ "sidebarItems": [
12084
+ {
12085
+ "kind": "view",
12086
+ "viewName": "Ecosystem Map",
12087
+ "label": "Ecosystem Map",
12088
+ "icon": "radar"
12089
+ },
12090
+ {
12091
+ "kind": "view",
12092
+ "viewName": "Segments",
12093
+ "label": "Segments",
12094
+ "icon": "pie-chart"
12095
+ },
12096
+ {
12097
+ "kind": "view",
12098
+ "viewName": "Trends",
12099
+ "label": "Trends",
12100
+ "icon": "trending-up"
12101
+ },
12102
+ {
12103
+ "kind": "view",
12104
+ "viewName": "Events",
12105
+ "label": "Events",
12106
+ "icon": "zap"
12107
+ },
12108
+ {
12109
+ "kind": "app",
12110
+ "appId": "data",
12111
+ "label": "Data",
12112
+ "icon": "database"
12113
+ }
12114
+ ]
12115
+ },
12116
+ "bento": {
12117
+ "viewName": "Ecosystem Map",
12118
+ "blocks": [
12119
+ {
12120
+ "kind": "view",
12121
+ "viewName": "Ecosystem Map",
12122
+ "pos": {
12123
+ "x": 0,
12124
+ "y": 0,
12125
+ "w": 8,
12126
+ "h": 6
12127
+ }
12128
+ },
12129
+ {
12130
+ "kind": "view",
12131
+ "viewName": "Segments",
12132
+ "pos": {
12133
+ "x": 8,
12134
+ "y": 0,
12135
+ "w": 4,
12136
+ "h": 3
12137
+ }
12138
+ },
12139
+ {
12140
+ "kind": "view",
12141
+ "viewName": "Trends",
12142
+ "pos": {
12143
+ "x": 8,
12144
+ "y": 3,
12145
+ "w": 4,
12146
+ "h": 3
12147
+ }
12148
+ }
12149
+ ]
12150
+ }
12151
+ },
12152
+ "enterprise-os": {
12153
+ "meta": {
12154
+ "slug": "enterprise-os",
12155
+ "name": "Enterprise OS",
12156
+ "description": "Stand up a company's public operating core in one install — strategy, market, operations, and pipeline — plus a command tower to track objectives across them.",
12157
+ "icon": "layout-dashboard",
12158
+ "color": "#4F46E5",
12159
+ "tags": [
12160
+ "suite",
12161
+ "enterprise",
12162
+ "os",
12163
+ "foundation",
12164
+ "crm",
12165
+ "operations",
12166
+ "ecosystem"
12167
+ ],
12168
+ "isPublic": true
12169
+ },
12170
+ "dependencies": [
12171
+ {
12172
+ "slug": "foundation",
12173
+ "kind": "workspace",
12174
+ "relation": "require",
12175
+ "reason": "Strategic DNA + the pod-wide role vocabulary (partner/client/lead) every other lens reuses. Must resolve first."
12176
+ },
12177
+ {
12178
+ "slug": "ecosystem",
12179
+ "kind": "workspace",
12180
+ "relation": "require",
12181
+ "reason": "The market graph — the players, segments, and trends the company operates around."
12182
+ },
12183
+ {
12184
+ "slug": "operations",
12185
+ "kind": "workspace",
12186
+ "relation": "require",
12187
+ "reason": "How the company runs — the operational lens."
12188
+ },
12189
+ {
12190
+ "slug": "crm",
12191
+ "kind": "workspace",
12192
+ "relation": "require",
12193
+ "reason": "The pipeline — contacts, leads, clients, and deals."
12194
+ },
12195
+ {
12196
+ "slug": "content-os",
12197
+ "kind": "workspace",
12198
+ "relation": "require",
12199
+ "reason": "The editorial engine — pillars, posts, platforms, and newsletters — so the company's content operation is part of the operating core."
12200
+ }
12201
+ ],
12202
+ "workspace": {
12203
+ "name": "Enterprise OS",
12204
+ "description": "The command tower for the company operating system — track strategic objectives across the strategy, market, operations, and pipeline lenses this suite installs.",
12205
+ "subtype": "enterprise-os",
12206
+ "visibility": "pod_visible",
12207
+ "sourceRoles": {
12208
+ "strategy": "consumer"
12209
+ }
12210
+ },
12211
+ "profiles": [
12212
+ {
12213
+ "slug": "objective",
12214
+ "displayName": "Objective",
12215
+ "icon": "target",
12216
+ "color": "#4F46E5",
12217
+ "description": "A company objective the operating system is driving toward — the cross-cutting outcome the lenses serve.",
12218
+ "properties": [
12219
+ {
12220
+ "slug": "outcome",
12221
+ "label": "Outcome",
12222
+ "valueType": "string",
12223
+ "inputType": "textarea"
12224
+ },
12225
+ {
12226
+ "slug": "status",
12227
+ "label": "Status",
12228
+ "valueType": "string",
12229
+ "inputType": "select",
12230
+ "enumValues": [
12231
+ "on-track",
12232
+ "at-risk",
12233
+ "off-track",
12234
+ "achieved"
12235
+ ],
12236
+ "constraints": {
12237
+ "defaultValue": "on-track"
12238
+ }
12239
+ },
12240
+ {
12241
+ "slug": "horizon",
12242
+ "label": "Horizon",
12243
+ "valueType": "string",
12244
+ "inputType": "select",
12245
+ "enumValues": [
12246
+ "now",
12247
+ "next",
12248
+ "later"
12249
+ ],
12250
+ "constraints": {
12251
+ "defaultValue": "now"
12252
+ }
12253
+ },
12254
+ {
12255
+ "slug": "owner",
12256
+ "label": "Owner",
12257
+ "valueType": "string",
12258
+ "inputType": "text"
12259
+ },
12260
+ {
12261
+ "slug": "targetDate",
12262
+ "label": "Target Date",
12263
+ "valueType": "date",
12264
+ "inputType": "date"
12265
+ }
12266
+ ]
12267
+ }
12268
+ ],
12269
+ "views": [
12270
+ {
12271
+ "name": "Objectives",
12272
+ "slug": "objectives",
12273
+ "type": "table",
12274
+ "scopeProfileSlug": "objective",
12275
+ "description": "The company's strategic objectives across every lens, by horizon and status.",
12276
+ "defaultView": true,
12277
+ "config": {
12278
+ "columns": [
12279
+ "title",
12280
+ "status",
12281
+ "horizon",
12282
+ "owner",
12283
+ "targetDate"
12284
+ ]
12285
+ }
12286
+ },
12287
+ {
12288
+ "name": "Objective Board",
12289
+ "slug": "objective-board",
12290
+ "type": "kanban",
12291
+ "scopeProfileSlug": "objective",
12292
+ "description": "Objectives grouped by status — a running scoreboard for the operating system.",
12293
+ "config": {
12294
+ "groupBy": "status"
12295
+ }
11369
12296
  }
11370
12297
  ],
11371
12298
  "onboarding": {
11372
- "goal": "Map the real ecosystem — the key players (companies and people), who partners and competes with whom, and the segments and trends that matter — so strategy is grounded in the actual market, not a vague \"the market\".\n",
11373
- "framing": "THE ECOSYSTEM LEAD: Act as a sharp ecosystem lead who maps the market\nlandscape AND the relationships inside it. Push for REAL named players — not\n\"the incumbents\", but the actual companies — and for the concrete edges\nbetween them: who partners with whom, who competes, who invested in whom.\nA map with no edges is just a list; the value is in the relationships.\n",
12299
+ "goal": "Stand up the company's operating core and name the handful of strategic objectives it is driving — so strategy, market, operations, and pipeline are all in place and pointed at the same outcomes from day one.\n",
12300
+ "framing": "THE CHIEF OF STAFF: Act as a sharp chief of staff standing up the company OS.\nThe four lenses (foundation, ecosystem, operations, CRM) are already\ninstalled — your job is to name the 3-5 objectives that cut across them, so\nthe operating system has a scoreboard, not just structure.\n",
11374
12301
  "expertise": {
11375
12302
  "starters": [
11376
- "Name the actors, then draw the edges. A list of logos tells strategy nothing; the market is a GRAPH. For every company you log, propose at least one real relationship — partners_with, competes_with, invested_in, integrates_with — because the edges are where the leverage and the threats live.\n",
11377
- "Map the CATEGORY, not just named rivals. Buyers compare across tiers: direct competitors, adjacent tools that solve the same job differently, and the status quo (\"a spreadsheet\", \"do nothing\"). Attach the competitor role to real companies and place each one in the segment it competes in.\n",
11378
- "Separate players from structure. Companies and people are the ACTORS; segments and trends are the STRUCTURE they move within. Anchor each trend to a direction and a \"so what for us\", and each segment to a rough size and ocean — an untimed \"AI is big\" tells strategy nothing.\n"
12303
+ "Name few, real objectives. An operating system with 20 objectives has none; force the 3-5 that actually decide the year, each with an owner and a horizon (now / next / later).\n",
12304
+ "Tie each objective to a lens. A good objective names where it lives — pipeline growth (CRM), a market move (ecosystem), an operational fix (operations), or a positioning shift (foundation) — so the scoreboard maps to the structure underneath it.\n"
11379
12305
  ],
11380
12306
  "blindSpots": [
11381
- "\"We have no competitors\" is a red flag, not a moat — it usually means the category is undefined or the buyer's real alternative (a manual workaround) hasn't been named. Push to name what a buyer does TODAY instead of buying.\n",
11382
- "Founders over-watch the loud incumbent and miss the fast-moving insurgent one tier down, and they log companies with no relationships at all. Surface the insurgents, and force at least one real edge per key player.\n",
11383
- "A trend or event with no stance is just a headline. Every trend needs a direction (rising/steady/fading) and a \"so what\"; every logged event needs an actor and an impact. Force the meaning, not just the mention.\n"
12307
+ "Objectives with no owner and no date are wishes. Every one needs a single owner and a target date, or it will not move.\n",
12308
+ "\"Grow the business\" is not an objective — it is a category. Push for the specific outcome that would make this quarter a win.\n"
11384
12309
  ],
11385
- "bar": "The map reads like a real ecosystem: named companies placed in their segments, real edges between them (who partners, competes, invested), and each trend carrying a direction and a \"so what\" — so a strategist can see the alliances, the threats, and the open lane, not just a pile of logos.\n"
12310
+ "bar": "A short, honest scoreboard: 3-5 objectives, each owned, dated, placed on a horizon, and tied to the lens that serves it — sitting on top of a fully installed operating core.\n"
11386
12311
  },
11387
12312
  "collect": [
11388
12313
  {
11389
- "profileSlug": "company",
11390
- "what": "The real companies in your ecosystem — the players you operate around.",
11391
- "cardinality": "several",
11392
- "keyFields": [
11393
- "industry",
11394
- "website"
11395
- ]
11396
- },
11397
- {
11398
- "profileSlug": "market-segment",
11399
- "what": "The market slices you play in, with rough size and ocean.",
11400
- "cardinality": "few",
11401
- "keyFields": [
11402
- "ocean",
11403
- "tam"
11404
- ]
11405
- },
11406
- {
11407
- "profileSlug": "trend",
11408
- "what": "Directional shifts in tech, market, or behavior that affect you.",
12314
+ "profileSlug": "objective",
12315
+ "what": "The 3-5 strategic objectives the company is driving this horizon.",
11409
12316
  "cardinality": "few",
11410
12317
  "keyFields": [
11411
- "direction",
11412
- "relevance"
12318
+ "status",
12319
+ "horizon",
12320
+ "owner"
11413
12321
  ]
11414
12322
  }
11415
12323
  ],
11416
12324
  "openingQuestions": [
11417
- "Who are the key players in your space — the 3-5 companies that matter most?",
11418
- "How do they relate — who partners with, competes with, or invested in whom?",
11419
- "Which market segment matters most right now, and what trend is reshaping it?"
12325
+ "What are the 3-5 objectives that will decide this year for the company?",
12326
+ "Who owns each one, and is it a now, next, or later horizon?"
11420
12327
  ],
11421
- "doneWhen": "A few companies captured, with at least one relationship edge between them, plus one market segment."
12328
+ "doneWhen": "A few objectives captured, each with an owner and a horizon."
11422
12329
  },
11423
12330
  "app": {
11424
12331
  "kind": "stored",
11425
12332
  "cellKey": "entity-detail"
11426
12333
  },
11427
12334
  "layout": {
11428
- "defaultView": "Ecosystem Map",
12335
+ "defaultView": "Objectives",
11429
12336
  "defaultApp": null,
11430
12337
  "pinnedApps": [
11431
12338
  "dashboard",
@@ -11434,27 +12341,15 @@ const DATA = {
11434
12341
  "sidebarItems": [
11435
12342
  {
11436
12343
  "kind": "view",
11437
- "viewName": "Ecosystem Map",
11438
- "label": "Ecosystem Map",
11439
- "icon": "radar"
11440
- },
11441
- {
11442
- "kind": "view",
11443
- "viewName": "Segments",
11444
- "label": "Segments",
11445
- "icon": "pie-chart"
11446
- },
11447
- {
11448
- "kind": "view",
11449
- "viewName": "Trends",
11450
- "label": "Trends",
11451
- "icon": "trending-up"
12344
+ "viewName": "Objectives",
12345
+ "label": "Objectives",
12346
+ "icon": "target"
11452
12347
  },
11453
12348
  {
11454
12349
  "kind": "view",
11455
- "viewName": "Events",
11456
- "label": "Events",
11457
- "icon": "zap"
12350
+ "viewName": "Objective Board",
12351
+ "label": "Board",
12352
+ "icon": "kanban-square"
11458
12353
  },
11459
12354
  {
11460
12355
  "kind": "app",
@@ -11465,36 +12360,26 @@ const DATA = {
11465
12360
  ]
11466
12361
  },
11467
12362
  "bento": {
11468
- "viewName": "Ecosystem Map",
12363
+ "viewName": "Objectives",
11469
12364
  "blocks": [
11470
12365
  {
11471
12366
  "kind": "view",
11472
- "viewName": "Ecosystem Map",
12367
+ "viewName": "Objectives",
11473
12368
  "pos": {
11474
12369
  "x": 0,
11475
12370
  "y": 0,
11476
12371
  "w": 8,
11477
- "h": 6
12372
+ "h": 4
11478
12373
  }
11479
12374
  },
11480
12375
  {
11481
12376
  "kind": "view",
11482
- "viewName": "Segments",
12377
+ "viewName": "Objective Board",
11483
12378
  "pos": {
11484
12379
  "x": 8,
11485
12380
  "y": 0,
11486
12381
  "w": 4,
11487
- "h": 3
11488
- }
11489
- },
11490
- {
11491
- "kind": "view",
11492
- "viewName": "Trends",
11493
- "pos": {
11494
- "x": 8,
11495
- "y": 3,
11496
- "w": 4,
11497
- "h": 3
12382
+ "h": 4
11498
12383
  }
11499
12384
  }
11500
12385
  ]
@@ -20210,14 +21095,9 @@ const DATA = {
20210
21095
  "slug": "lead",
20211
21096
  "displayName": "Lead",
20212
21097
  "icon": "user-plus",
20213
- "color": "green",
20214
- "description": "A potential customer or partner contact in your pipeline",
20215
- "semanticSlug": "marketing.lead",
21098
+ "color": "yellow",
20216
21099
  "scope": "shared",
20217
21100
  "profileKind": "role",
20218
- "applicableKinds": [
20219
- "person"
20220
- ],
20221
21101
  "properties": [
20222
21102
  {
20223
21103
  "slug": "lead-source",
@@ -23758,6 +24638,234 @@ const DATA = {
23758
24638
  }
23759
24639
  ]
23760
24640
  }
24641
+ },
24642
+ "the-arch": {
24643
+ "meta": {
24644
+ "slug": "the-arch",
24645
+ "name": "The Arch",
24646
+ "description": "The complete private company brain — the whole Enterprise OS plus the grant pipeline, the web3 ecosystem overlay, and the dev dashboard.",
24647
+ "icon": "landmark",
24648
+ "color": "#7C3AED",
24649
+ "tags": [
24650
+ "suite",
24651
+ "private",
24652
+ "arch",
24653
+ "grants",
24654
+ "web3",
24655
+ "flagship"
24656
+ ],
24657
+ "isPublic": false
24658
+ },
24659
+ "dependencies": [
24660
+ {
24661
+ "slug": "enterprise-os",
24662
+ "kind": "workspace",
24663
+ "relation": "require",
24664
+ "reason": "The whole public operating core — strategy, market, operations, and pipeline — that the private flagships extend."
24665
+ },
24666
+ {
24667
+ "slug": "grants",
24668
+ "kind": "workspace",
24669
+ "relation": "require",
24670
+ "reason": "The grant-agency pipeline; composes its operations onto the Operations workspace the OS installs."
24671
+ },
24672
+ {
24673
+ "slug": "blockchain-ecosystem",
24674
+ "kind": "workspace",
24675
+ "relation": "require",
24676
+ "reason": "Web3 market actors + relations; composes onto the Ecosystem workspace the OS installs."
24677
+ },
24678
+ {
24679
+ "slug": "dev-dashboard",
24680
+ "kind": "workspace",
24681
+ "relation": "require",
24682
+ "reason": "The engineering / ops dashboard — the build-side view of the company."
24683
+ }
24684
+ ],
24685
+ "workspace": {
24686
+ "name": "The Arch",
24687
+ "description": "The private command layer over the full company brain — track the cross-workspace initiatives that span the operating system and its private flagships.",
24688
+ "subtype": "the-arch",
24689
+ "visibility": "private"
24690
+ },
24691
+ "profiles": [
24692
+ {
24693
+ "slug": "initiative",
24694
+ "displayName": "Initiative",
24695
+ "icon": "flag",
24696
+ "color": "#7C3AED",
24697
+ "description": "A cross-workspace initiative that spans the operating system and its private flagships.",
24698
+ "properties": [
24699
+ {
24700
+ "slug": "summary",
24701
+ "label": "Summary",
24702
+ "valueType": "string",
24703
+ "inputType": "textarea"
24704
+ },
24705
+ {
24706
+ "slug": "stage",
24707
+ "label": "Stage",
24708
+ "valueType": "string",
24709
+ "inputType": "select",
24710
+ "enumValues": [
24711
+ "shaping",
24712
+ "active",
24713
+ "blocked",
24714
+ "shipped",
24715
+ "archived"
24716
+ ],
24717
+ "constraints": {
24718
+ "defaultValue": "shaping"
24719
+ }
24720
+ },
24721
+ {
24722
+ "slug": "lead",
24723
+ "label": "Lead",
24724
+ "valueType": "string",
24725
+ "inputType": "text"
24726
+ },
24727
+ {
24728
+ "slug": "priority",
24729
+ "label": "Priority",
24730
+ "valueType": "string",
24731
+ "inputType": "select",
24732
+ "enumValues": [
24733
+ "low",
24734
+ "medium",
24735
+ "high",
24736
+ "critical"
24737
+ ],
24738
+ "constraints": {
24739
+ "defaultValue": "medium"
24740
+ }
24741
+ },
24742
+ {
24743
+ "slug": "dueDate",
24744
+ "label": "Due Date",
24745
+ "valueType": "date",
24746
+ "inputType": "date"
24747
+ }
24748
+ ]
24749
+ }
24750
+ ],
24751
+ "views": [
24752
+ {
24753
+ "name": "Initiatives",
24754
+ "slug": "initiatives",
24755
+ "type": "table",
24756
+ "scopeProfileSlug": "initiative",
24757
+ "description": "The cross-workspace initiatives spanning the full company brain, by stage and priority.",
24758
+ "defaultView": true,
24759
+ "config": {
24760
+ "columns": [
24761
+ "title",
24762
+ "stage",
24763
+ "priority",
24764
+ "lead",
24765
+ "dueDate"
24766
+ ]
24767
+ }
24768
+ },
24769
+ {
24770
+ "name": "Initiative Board",
24771
+ "slug": "initiative-board",
24772
+ "type": "kanban",
24773
+ "scopeProfileSlug": "initiative",
24774
+ "description": "Initiatives grouped by stage — the command view over everything in flight.",
24775
+ "config": {
24776
+ "groupBy": "stage"
24777
+ }
24778
+ }
24779
+ ],
24780
+ "onboarding": {
24781
+ "goal": "Name the cross-workspace initiatives that span the operating system and its private flagships — the few big things in flight that touch more than one lens — so The Arch is a real command layer, not just an aggregate of apps.\n",
24782
+ "framing": "THE FOUNDER'S COMMAND LAYER: Act from the seat above every lens. The whole\ncompany brain is installed — operating core plus the private grant, web3, and\ndev flagships. Your job is to surface the handful of initiatives that cut\nacross them and give each a stage, a lead, and a priority.\n",
24783
+ "expertise": {
24784
+ "starters": [
24785
+ "Name the cross-cutting few. An initiative earns a place here only if it spans more than one workspace — a grant round that pulls in operations, ecosystem, and dev. Single-lens work stays in its lens.\n",
24786
+ "Give each initiative a real stage and lead. Shaping / active / blocked / shipped is the honest status; a lead is who to ask. Without them the command layer is a wish list.\n"
24787
+ ],
24788
+ "blindSpots": [
24789
+ "Everything marked \"high priority\" is the same as nothing marked. Force the ranking — what is actually critical this week?\n",
24790
+ "A blocked initiative with no note about the blocker is invisible risk. Name what is stuck and on whom.\n"
24791
+ ],
24792
+ "bar": "A short command board: the few genuinely cross-workspace initiatives, each with a stage, a lead, and an honest priority — sitting over a fully installed company brain.\n"
24793
+ },
24794
+ "collect": [
24795
+ {
24796
+ "profileSlug": "initiative",
24797
+ "what": "The cross-workspace initiatives currently in flight.",
24798
+ "cardinality": "few",
24799
+ "keyFields": [
24800
+ "stage",
24801
+ "priority",
24802
+ "lead"
24803
+ ]
24804
+ }
24805
+ ],
24806
+ "openingQuestions": [
24807
+ "What are the few big initiatives in flight that span more than one part of the company?",
24808
+ "For each, what stage is it in and who is the lead?"
24809
+ ],
24810
+ "doneWhen": "A few cross-workspace initiatives captured, each with a stage and a lead."
24811
+ },
24812
+ "app": {
24813
+ "kind": "stored",
24814
+ "cellKey": "entity-detail"
24815
+ },
24816
+ "layout": {
24817
+ "defaultView": "Initiatives",
24818
+ "defaultApp": null,
24819
+ "pinnedApps": [
24820
+ "dashboard",
24821
+ "data"
24822
+ ],
24823
+ "sidebarItems": [
24824
+ {
24825
+ "kind": "view",
24826
+ "viewName": "Initiatives",
24827
+ "label": "Initiatives",
24828
+ "icon": "flag"
24829
+ },
24830
+ {
24831
+ "kind": "view",
24832
+ "viewName": "Initiative Board",
24833
+ "label": "Board",
24834
+ "icon": "kanban-square"
24835
+ },
24836
+ {
24837
+ "kind": "app",
24838
+ "appId": "data",
24839
+ "label": "Data",
24840
+ "icon": "database"
24841
+ }
24842
+ ]
24843
+ },
24844
+ "bento": {
24845
+ "viewName": "Initiatives",
24846
+ "blocks": [
24847
+ {
24848
+ "kind": "view",
24849
+ "viewName": "Initiatives",
24850
+ "pos": {
24851
+ "x": 0,
24852
+ "y": 0,
24853
+ "w": 8,
24854
+ "h": 4
24855
+ }
24856
+ },
24857
+ {
24858
+ "kind": "view",
24859
+ "viewName": "Initiative Board",
24860
+ "pos": {
24861
+ "x": 8,
24862
+ "y": 0,
24863
+ "w": 4,
24864
+ "h": 4
24865
+ }
24866
+ }
24867
+ ]
24868
+ }
23761
24869
  }
23762
24870
  } as unknown as Record<string, WorkspaceYaml>;
23763
24871
 
@@ -23773,6 +24881,16 @@ export function listWorkspaceTemplates(): WorkspaceYaml[] {
23773
24881
  return Object.values(WORKSPACE_TEMPLATES);
23774
24882
  }
23775
24883
 
24884
+ /**
24885
+ * Public templates only (`meta.isPublic !== false`). This is a CONVENIENCE
24886
+ * filter for the default picker — NOT a security boundary: the private YAML
24887
+ * still ships in the published tarball, so anything that must not leak cannot
24888
+ * rely on this. `listWorkspaceTemplates()` returns all of them (CLI, seeder,
24889
+ * tripwire need the full set). Publicity is also expressed per-entry as
24890
+ * `CatalogEntry.isPrivate` by `mergeCatalog()`, so a caller can pass ALL
24891
+ * templates and filter at the presentation layer instead of choosing a list
24892
+ * function up front — the merge door itself never filters (it stays pure).
24893
+ */
23776
24894
  export function listPublicTemplates(): WorkspaceYaml[] {
23777
24895
  return Object.values(WORKSPACE_TEMPLATES).filter(t => t.meta?.isPublic !== false);
23778
24896
  }