@tickernelz/paperclip-pro-shared 2026.1105.1 → 2026.1108.0
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/.paperclip-build-complete +1 -1
- package/dist/agent-appearance.d.ts +1 -1
- package/dist/agent-appearance.js +1 -1
- package/dist/ai-connections.d.ts +53 -1
- package/dist/ai-connections.d.ts.map +1 -1
- package/dist/ai-connections.js +8 -2
- package/dist/ai-connections.js.map +1 -1
- package/dist/ai-provider-routing.d.ts.map +1 -1
- package/dist/ai-provider-routing.js +1 -2
- package/dist/ai-provider-routing.js.map +1 -1
- package/dist/app-definitions.test.js +0 -9
- package/dist/app-definitions.test.js.map +1 -1
- package/dist/config-schema.js +10 -10
- package/dist/config-schema.js.map +1 -1
- package/dist/config-schema.test.js +5 -5
- package/dist/config-schema.test.js.map +1 -1
- package/dist/constants.d.ts +5 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -24
- package/dist/constants.js.map +1 -1
- package/dist/env-aliases-bootstrap.d.ts +2 -0
- package/dist/env-aliases-bootstrap.d.ts.map +1 -0
- package/dist/env-aliases-bootstrap.js +3 -0
- package/dist/env-aliases-bootstrap.js.map +1 -0
- package/dist/env-aliases.d.ts +12 -0
- package/dist/env-aliases.d.ts.map +1 -0
- package/dist/env-aliases.js +61 -0
- package/dist/env-aliases.js.map +1 -0
- package/dist/env-aliases.test.d.ts +2 -0
- package/dist/env-aliases.test.d.ts.map +1 -0
- package/dist/env-aliases.test.js +92 -0
- package/dist/env-aliases.test.js.map +1 -0
- package/dist/environment-support.d.ts.map +1 -1
- package/dist/environment-support.js +2 -12
- package/dist/environment-support.js.map +1 -1
- package/dist/environment-support.test.js +0 -19
- package/dist/environment-support.test.js.map +1 -1
- package/dist/feature-catalog.d.ts +55 -0
- package/dist/feature-catalog.d.ts.map +1 -1
- package/dist/feature-catalog.js +459 -0
- package/dist/feature-catalog.js.map +1 -1
- package/dist/feature-catalog.test.js +115 -1
- package/dist/feature-catalog.test.js.map +1 -1
- package/dist/frontmatter.test.js +0 -1
- package/dist/frontmatter.test.js.map +1 -1
- package/dist/home-paths.d.ts +3 -0
- package/dist/home-paths.d.ts.map +1 -1
- package/dist/home-paths.js +26 -2
- package/dist/home-paths.js.map +1 -1
- package/dist/home-paths.test.js +56 -1
- package/dist/home-paths.test.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp-setup.js +2 -2
- package/dist/mcp-setup.js.map +1 -1
- package/dist/omp-agent-settings.d.ts +187 -0
- package/dist/omp-agent-settings.d.ts.map +1 -0
- package/dist/omp-agent-settings.js +518 -0
- package/dist/omp-agent-settings.js.map +1 -0
- package/dist/omp-agent-settings.test.d.ts +2 -0
- package/dist/omp-agent-settings.test.d.ts.map +1 -0
- package/dist/omp-agent-settings.test.js +181 -0
- package/dist/omp-agent-settings.test.js.map +1 -0
- package/dist/retired-adapters.d.ts +4 -0
- package/dist/retired-adapters.d.ts.map +1 -0
- package/dist/retired-adapters.js +23 -0
- package/dist/retired-adapters.js.map +1 -0
- package/dist/types/agent.d.ts +1 -1
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/app-definition.d.ts +0 -3
- package/dist/types/app-definition.d.ts.map +1 -1
- package/dist/types/plugin.d.ts +0 -5
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/validators/access.d.ts +0 -9
- package/dist/validators/access.d.ts.map +1 -1
- package/dist/validators/access.js +1 -10
- package/dist/validators/access.js.map +1 -1
- package/dist/validators/adapter-auth-session.d.ts +0 -8
- package/dist/validators/adapter-auth-session.d.ts.map +1 -1
- package/dist/validators/adapter-auth-session.js +2 -2
- package/dist/validators/agent.d.ts +0 -2
- package/dist/validators/agent.d.ts.map +1 -1
- package/dist/validators/agent.js +1 -3
- package/dist/validators/agent.js.map +1 -1
- package/dist/validators/app-definition.d.ts +0 -6
- package/dist/validators/app-definition.d.ts.map +1 -1
- package/dist/validators/app-definition.js +2 -8
- package/dist/validators/app-definition.js.map +1 -1
- package/dist/validators/claude-setup-token-session.d.ts +0 -8
- package/dist/validators/claude-setup-token-session.d.ts.map +1 -1
- package/dist/validators/claude-setup-token-session.js +2 -2
- package/dist/validators/finance.d.ts +2 -14
- package/dist/validators/finance.d.ts.map +1 -1
- package/dist/validators/index.d.ts +1 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +1 -1
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/onboarding-omp.d.ts +77 -0
- package/dist/validators/onboarding-omp.d.ts.map +1 -0
- package/dist/validators/onboarding-omp.js +24 -0
- package/dist/validators/onboarding-omp.js.map +1 -0
- package/dist/validators/plugin.d.ts +2 -43
- package/dist/validators/plugin.d.ts.map +1 -1
- package/dist/validators/plugin.js +3 -5
- package/dist/validators/plugin.js.map +1 -1
- package/dist/validators/plugin.test.js +5 -3
- package/dist/validators/plugin.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/ai-connection-router.d.ts +0 -361
- package/dist/ai-connection-router.d.ts.map +0 -1
- package/dist/ai-connection-router.js +0 -55
- package/dist/ai-connection-router.js.map +0 -1
package/dist/feature-catalog.js
CHANGED
|
@@ -328,6 +328,465 @@ export const INSTANCE_FEATURE_CATALOG = {
|
|
|
328
328
|
},
|
|
329
329
|
};
|
|
330
330
|
export const INSTANCE_FEATURE_KEYS = Object.keys(INSTANCE_FEATURE_CATALOG).sort();
|
|
331
|
+
export const FEATURE_GROUPS = ["collaboration", "automation", "integrations", "workspace", "display"];
|
|
332
|
+
export const ADVANCED_GROUPS = ["developer", "runtime"];
|
|
333
|
+
export const FEATURE_DESTINATIONS = ["features", "advanced", "permanent", "removed", "merged"];
|
|
334
|
+
export const INSTANCE_FEATURE_PLACEMENT = {
|
|
335
|
+
enableDecisions: {
|
|
336
|
+
destination: "features",
|
|
337
|
+
group: "collaboration",
|
|
338
|
+
name: "Decisions",
|
|
339
|
+
summary: "One place for every task that is waiting on your answer.",
|
|
340
|
+
whenOn: "Decisions appears in the sidebar.",
|
|
341
|
+
whenOff: "The Decisions item hides; questions stay on their tasks.",
|
|
342
|
+
requires: [],
|
|
343
|
+
finished: true,
|
|
344
|
+
},
|
|
345
|
+
enableAgentChat: {
|
|
346
|
+
destination: "features",
|
|
347
|
+
group: "collaboration",
|
|
348
|
+
name: "Agent chat",
|
|
349
|
+
summary: "Talk to each agent in one ongoing conversation next to its tasks and artifacts.",
|
|
350
|
+
whenOn: "Chat leads the Work group with an agent rail.",
|
|
351
|
+
whenOff: "Chat leaves the navigation; conversations are kept and active runs finish.",
|
|
352
|
+
requires: [],
|
|
353
|
+
finished: true,
|
|
354
|
+
},
|
|
355
|
+
enableConferenceRoomChat: {
|
|
356
|
+
destination: "features",
|
|
357
|
+
group: "collaboration",
|
|
358
|
+
name: "Conference room",
|
|
359
|
+
summary: "A shared team chat with a live activity feed, and task threads shown as chat.",
|
|
360
|
+
whenOn: "The team chat and activity feed open; task threads use chat bubbles.",
|
|
361
|
+
whenOff: "The room and feed hide; messages stay stored.",
|
|
362
|
+
requires: [],
|
|
363
|
+
finished: true,
|
|
364
|
+
},
|
|
365
|
+
enablePixelsOffice: {
|
|
366
|
+
destination: "features",
|
|
367
|
+
group: "collaboration",
|
|
368
|
+
name: "Pixels office",
|
|
369
|
+
summary: "A pixel-art office where each agent shows how many tasks it holds.",
|
|
370
|
+
whenOn: "The Pixels office view is available.",
|
|
371
|
+
whenOff: "The view hides; no data is involved.",
|
|
372
|
+
requires: [],
|
|
373
|
+
finished: true,
|
|
374
|
+
},
|
|
375
|
+
enableStatusCards: {
|
|
376
|
+
destination: "features",
|
|
377
|
+
group: "collaboration",
|
|
378
|
+
name: "Status cards",
|
|
379
|
+
summary: "A shared board of status cards that agents keep up to date.",
|
|
380
|
+
whenOn: "The status card board and its API turn on.",
|
|
381
|
+
whenOff: "The board and API turn off; card history stays.",
|
|
382
|
+
requires: ["enableSummaries"],
|
|
383
|
+
finished: true,
|
|
384
|
+
},
|
|
385
|
+
enableSummaries: {
|
|
386
|
+
destination: "features",
|
|
387
|
+
group: "collaboration",
|
|
388
|
+
name: "Summaries",
|
|
389
|
+
summary: "Agent-written status summaries on project and workspace pages.",
|
|
390
|
+
whenOn: "Summary slots appear with refresh and revision history.",
|
|
391
|
+
whenOff: "The slots hide; stored summaries stay.",
|
|
392
|
+
requires: [],
|
|
393
|
+
finished: true,
|
|
394
|
+
},
|
|
395
|
+
enableCombinedInboxTasks: {
|
|
396
|
+
destination: "features",
|
|
397
|
+
group: "collaboration",
|
|
398
|
+
name: "Inbox inside Tasks",
|
|
399
|
+
summary: "Inbox and task lists become views of one Tasks page.",
|
|
400
|
+
whenOn: "One Tasks row carries the unread badge and a Views menu.",
|
|
401
|
+
whenOff: "Inbox and Tasks stay separate pages.",
|
|
402
|
+
requires: [],
|
|
403
|
+
finished: true,
|
|
404
|
+
},
|
|
405
|
+
enablePipelines: {
|
|
406
|
+
destination: "features",
|
|
407
|
+
group: "automation",
|
|
408
|
+
name: "Pipelines",
|
|
409
|
+
summary: "Multi-stage pipelines that produce cases step by step.",
|
|
410
|
+
whenOn: "Pipelines appears in the sidebar.",
|
|
411
|
+
whenOff: "Pipelines hides; definitions stay stored.",
|
|
412
|
+
requires: ["enableCases"],
|
|
413
|
+
finished: true,
|
|
414
|
+
},
|
|
415
|
+
enableCases: {
|
|
416
|
+
destination: "features",
|
|
417
|
+
group: "automation",
|
|
418
|
+
name: "Cases",
|
|
419
|
+
summary: "Durable work products that tasks create and refine.",
|
|
420
|
+
whenOn: "The Cases tab and the agent case API turn on.",
|
|
421
|
+
whenOff: "The tab and API turn off; cases stay stored.",
|
|
422
|
+
requires: [],
|
|
423
|
+
finished: true,
|
|
424
|
+
},
|
|
425
|
+
enableIssuePlanDecompositions: {
|
|
426
|
+
destination: "features",
|
|
427
|
+
group: "automation",
|
|
428
|
+
name: "Plan breakdown history",
|
|
429
|
+
summary: "See how an accepted plan was split into subtasks.",
|
|
430
|
+
whenOn: "Task pages show plan breakdown history.",
|
|
431
|
+
whenOff: "The history hides; created subtasks stay.",
|
|
432
|
+
requires: [],
|
|
433
|
+
finished: true,
|
|
434
|
+
},
|
|
435
|
+
enableFirstTaskPlanProposal: {
|
|
436
|
+
destination: "features",
|
|
437
|
+
group: "automation",
|
|
438
|
+
name: "Plan before first task",
|
|
439
|
+
summary: "For a new company's first single task, the chief of staff proposes a short plan first.",
|
|
440
|
+
whenOn: "The first task opens with a plan document and a checkbox card.",
|
|
441
|
+
whenOff: "The first task asks for one confirmation.",
|
|
442
|
+
requires: [],
|
|
443
|
+
finished: false,
|
|
444
|
+
},
|
|
445
|
+
enableBuiltInAgents: {
|
|
446
|
+
destination: "features",
|
|
447
|
+
group: "automation",
|
|
448
|
+
name: "Built-in agents",
|
|
449
|
+
summary: "Ready-made agents that the app manages for you.",
|
|
450
|
+
whenOn: "The Built-in agents tab, roster badges, and setup controls appear.",
|
|
451
|
+
whenOff: "These surfaces hide; hired agents keep running.",
|
|
452
|
+
requires: [],
|
|
453
|
+
finished: true,
|
|
454
|
+
},
|
|
455
|
+
enableFastResponses: {
|
|
456
|
+
destination: "features",
|
|
457
|
+
group: "automation",
|
|
458
|
+
name: "Fast replies",
|
|
459
|
+
summary: "A short acknowledgement while an agent starts working.",
|
|
460
|
+
whenOn: "Agents may post a short receipt before the full reply.",
|
|
461
|
+
whenOff: "Agents post only full replies.",
|
|
462
|
+
requires: [],
|
|
463
|
+
finished: false,
|
|
464
|
+
},
|
|
465
|
+
enableChatConnectors: {
|
|
466
|
+
destination: "features",
|
|
467
|
+
group: "integrations",
|
|
468
|
+
name: "Chat channels",
|
|
469
|
+
summary: "Reach your agents from chat apps and email.",
|
|
470
|
+
whenOn: "Chat channel setup and Board surfaces appear.",
|
|
471
|
+
whenOff: "Setup hides; existing connections keep running.",
|
|
472
|
+
requires: [],
|
|
473
|
+
finished: true,
|
|
474
|
+
},
|
|
475
|
+
enableMemoryConnectors: {
|
|
476
|
+
destination: "features",
|
|
477
|
+
group: "integrations",
|
|
478
|
+
name: "Memory connectors",
|
|
479
|
+
summary: "Connect agents to Mem0, Zep, Supermemory, Cognee, or Honcho.",
|
|
480
|
+
whenOn: "Memory connector setup appears.",
|
|
481
|
+
whenOff: "Setup hides; existing connections keep running.",
|
|
482
|
+
requires: [],
|
|
483
|
+
finished: false,
|
|
484
|
+
},
|
|
485
|
+
enablePublicMcp: {
|
|
486
|
+
destination: "features",
|
|
487
|
+
group: "integrations",
|
|
488
|
+
name: "Assistant connections",
|
|
489
|
+
summary: "Let outside assistants review work and delegate tasks over MCP.",
|
|
490
|
+
whenOn: "Outside assistants can connect as a person.",
|
|
491
|
+
whenOff: "Outside assistants cannot connect.",
|
|
492
|
+
requires: [],
|
|
493
|
+
finished: true,
|
|
494
|
+
},
|
|
495
|
+
enableGitHubReviewBots: {
|
|
496
|
+
destination: "features",
|
|
497
|
+
group: "integrations",
|
|
498
|
+
name: "GitHub review bots",
|
|
499
|
+
summary: "Set up bots that review pull requests on GitHub.",
|
|
500
|
+
whenOn: "Review bot setup appears.",
|
|
501
|
+
whenOff: "Setup hides; existing bots keep running.",
|
|
502
|
+
requires: [],
|
|
503
|
+
finished: false,
|
|
504
|
+
},
|
|
505
|
+
enableOpenAiDot: {
|
|
506
|
+
destination: "features",
|
|
507
|
+
group: "integrations",
|
|
508
|
+
name: "OpenAI Dot",
|
|
509
|
+
summary: "Offer OpenAI Dot as an agent choice on an instance with a public HTTPS URL.",
|
|
510
|
+
whenOn: "OpenAI Dot appears when you hire an agent.",
|
|
511
|
+
whenOff: "The choice hides.",
|
|
512
|
+
requires: ["enablePublicMcp"],
|
|
513
|
+
finished: true,
|
|
514
|
+
},
|
|
515
|
+
enableExternalObjects: {
|
|
516
|
+
destination: "features",
|
|
517
|
+
group: "integrations",
|
|
518
|
+
name: "Linked objects",
|
|
519
|
+
summary: "Show the live status of pull requests and tickets linked in tasks.",
|
|
520
|
+
whenOn: "Linked URLs show their resolved status.",
|
|
521
|
+
whenOff: "Links show as plain URLs.",
|
|
522
|
+
requires: [],
|
|
523
|
+
finished: true,
|
|
524
|
+
},
|
|
525
|
+
enableBetaSkills: {
|
|
526
|
+
destination: "features",
|
|
527
|
+
group: "integrations",
|
|
528
|
+
name: "Beta skills",
|
|
529
|
+
summary: "Let agents pin beta releases of the core skill.",
|
|
530
|
+
whenOn: "Agents may pin a beta core skill.",
|
|
531
|
+
whenOff: "Agents use the stable core skill.",
|
|
532
|
+
requires: [],
|
|
533
|
+
finished: true,
|
|
534
|
+
},
|
|
535
|
+
enableEnvironments: {
|
|
536
|
+
destination: "features",
|
|
537
|
+
group: "workspace",
|
|
538
|
+
name: "Environments",
|
|
539
|
+
summary: "Manage environments and assign them to projects and agents.",
|
|
540
|
+
whenOn: "Environments appear in company settings.",
|
|
541
|
+
whenOff: "Management hides; existing assignments keep working.",
|
|
542
|
+
requires: [],
|
|
543
|
+
finished: true,
|
|
544
|
+
},
|
|
545
|
+
enableIsolatedWorkspaces: {
|
|
546
|
+
destination: "features",
|
|
547
|
+
group: "workspace",
|
|
548
|
+
name: "Isolated workspaces",
|
|
549
|
+
summary: "Give each task its own git worktree instead of the shared checkout.",
|
|
550
|
+
whenOn: "Workspace controls appear in project settings.",
|
|
551
|
+
whenOff: "Tasks share the project checkout.",
|
|
552
|
+
requires: [],
|
|
553
|
+
finished: true,
|
|
554
|
+
},
|
|
555
|
+
enableGoalsSidebarLink: {
|
|
556
|
+
destination: "features",
|
|
557
|
+
group: "display",
|
|
558
|
+
name: "Goals in sidebar",
|
|
559
|
+
summary: "Show Goals in the main sidebar.",
|
|
560
|
+
whenOn: "Goals appears in the sidebar.",
|
|
561
|
+
whenOff: "Goals stays reachable by its URL.",
|
|
562
|
+
requires: [],
|
|
563
|
+
finished: true,
|
|
564
|
+
},
|
|
565
|
+
enableSimplifiedEnglishInteractions: {
|
|
566
|
+
destination: "features",
|
|
567
|
+
group: "display",
|
|
568
|
+
name: "Plain-English cards",
|
|
569
|
+
summary: "Agents write questions and confirmations in Simplified Technical English.",
|
|
570
|
+
whenOn: "New cards use simplified wording with short decision context.",
|
|
571
|
+
whenOff: "Cards use the default wording.",
|
|
572
|
+
requires: [],
|
|
573
|
+
finished: false,
|
|
574
|
+
},
|
|
575
|
+
enablePaperclipDeveloperMode: {
|
|
576
|
+
destination: "advanced",
|
|
577
|
+
group: "developer",
|
|
578
|
+
name: "Developer mode",
|
|
579
|
+
summary: "Show maintainer tools and observability links, including trace queries on run pages.",
|
|
580
|
+
requires: [],
|
|
581
|
+
},
|
|
582
|
+
enableServerInfoDebugView: {
|
|
583
|
+
destination: "advanced",
|
|
584
|
+
group: "developer",
|
|
585
|
+
name: "Server info",
|
|
586
|
+
summary: "Show a Server section in the account drawer with restart time and running commit.",
|
|
587
|
+
requires: [],
|
|
588
|
+
},
|
|
589
|
+
autoRestartDevServerWhenIdle: {
|
|
590
|
+
destination: "advanced",
|
|
591
|
+
group: "developer",
|
|
592
|
+
name: "Restart dev server when idle",
|
|
593
|
+
summary: "In pnpm dev:once, wait for runs to finish, then restart when the boot is stale.",
|
|
594
|
+
requires: [],
|
|
595
|
+
},
|
|
596
|
+
enableSmokeLab: {
|
|
597
|
+
destination: "advanced",
|
|
598
|
+
group: "developer",
|
|
599
|
+
name: "Smoke lab",
|
|
600
|
+
summary: "Add the Smoke Lab tab and dashboard card for testing integrations against local fixtures.",
|
|
601
|
+
requires: [],
|
|
602
|
+
},
|
|
603
|
+
enableNativeRunner: {
|
|
604
|
+
destination: "advanced",
|
|
605
|
+
group: "runtime",
|
|
606
|
+
name: "Native runner",
|
|
607
|
+
summary: "Allow the Rust runner for configured agents. Frozen: kept as it is.",
|
|
608
|
+
requires: [],
|
|
609
|
+
},
|
|
610
|
+
enableManagedSandboxOnly: {
|
|
611
|
+
destination: "advanced",
|
|
612
|
+
group: "runtime",
|
|
613
|
+
name: "Managed environments only",
|
|
614
|
+
summary: "Hide the local environment and run every agent in the managed environment.",
|
|
615
|
+
requires: [],
|
|
616
|
+
},
|
|
617
|
+
enableSandboxDuplexBridge: {
|
|
618
|
+
destination: "advanced",
|
|
619
|
+
group: "runtime",
|
|
620
|
+
name: "Sandbox duplex bridge",
|
|
621
|
+
summary: "Use the sandbox command-stream bridge when the provider supports it; off keeps the file bridge.",
|
|
622
|
+
requires: [],
|
|
623
|
+
},
|
|
624
|
+
enableWorktreeRunExecution: {
|
|
625
|
+
destination: "advanced",
|
|
626
|
+
group: "runtime",
|
|
627
|
+
name: "Worktree run execution",
|
|
628
|
+
summary: "In a git-worktree preview instance, run tasks created after this is turned on.",
|
|
629
|
+
requires: [],
|
|
630
|
+
},
|
|
631
|
+
enableWorkspaceBranchReconcileForward: {
|
|
632
|
+
destination: "advanced",
|
|
633
|
+
group: "runtime",
|
|
634
|
+
name: "Branch reconcile forward",
|
|
635
|
+
summary: "Move a diverged workspace branch forward instead of failing containment.",
|
|
636
|
+
requires: [],
|
|
637
|
+
},
|
|
638
|
+
enableWorkspaceDirtyQuarantineRepair: {
|
|
639
|
+
destination: "advanced",
|
|
640
|
+
group: "runtime",
|
|
641
|
+
name: "Dirty workspace repair",
|
|
642
|
+
summary: "Quarantine and repair dirty execution workspaces before runs.",
|
|
643
|
+
requires: [],
|
|
644
|
+
},
|
|
645
|
+
enableOwnerInstanceAdmin: {
|
|
646
|
+
destination: "advanced",
|
|
647
|
+
group: "runtime",
|
|
648
|
+
name: "Owner is instance admin",
|
|
649
|
+
summary: "On cloud-managed instances, give the stack owner instance-admin access. No effect when self-hosted.",
|
|
650
|
+
requires: [],
|
|
651
|
+
},
|
|
652
|
+
enableExperimentalFileViewer: {
|
|
653
|
+
destination: "permanent",
|
|
654
|
+
name: "File viewer",
|
|
655
|
+
summary: "Task file browsing is always on.",
|
|
656
|
+
},
|
|
657
|
+
enableStreamlinedLeftNavigation: {
|
|
658
|
+
destination: "permanent",
|
|
659
|
+
name: "Streamlined navigation",
|
|
660
|
+
summary: "The streamlined sidebar is the only navigation.",
|
|
661
|
+
},
|
|
662
|
+
enableStreamlinedUi: {
|
|
663
|
+
destination: "permanent",
|
|
664
|
+
name: "Streamlined interface",
|
|
665
|
+
summary: "The streamlined shell is the only interface.",
|
|
666
|
+
},
|
|
667
|
+
enableApps: {
|
|
668
|
+
destination: "permanent",
|
|
669
|
+
name: "Apps",
|
|
670
|
+
summary: "Apps are always on.",
|
|
671
|
+
},
|
|
672
|
+
enableMcpAggregators: {
|
|
673
|
+
destination: "permanent",
|
|
674
|
+
name: "MCP aggregators",
|
|
675
|
+
summary: "MCP aggregators are always on.",
|
|
676
|
+
},
|
|
677
|
+
enableClassicTaskInterface: {
|
|
678
|
+
destination: "removed",
|
|
679
|
+
name: "Classic task interface",
|
|
680
|
+
summary: "Removed with the classic task screen.",
|
|
681
|
+
},
|
|
682
|
+
enableRunnerPreviewIngress: {
|
|
683
|
+
destination: "removed",
|
|
684
|
+
name: "Runner preview ingress",
|
|
685
|
+
summary: "Removed; runner ingress follows the native runner setting.",
|
|
686
|
+
},
|
|
687
|
+
enableAiConnectionRouters: {
|
|
688
|
+
destination: "removed",
|
|
689
|
+
name: "AI connection routers",
|
|
690
|
+
summary: "Removed; there is one runtime and nothing to route.",
|
|
691
|
+
},
|
|
692
|
+
enableIsolatedWorkspacesByDefault: {
|
|
693
|
+
destination: "merged",
|
|
694
|
+
into: "enableIsolatedWorkspaces",
|
|
695
|
+
name: "Use for new projects",
|
|
696
|
+
summary: "Projects without their own workspace policy get isolated workspaces.",
|
|
697
|
+
},
|
|
698
|
+
};
|
|
699
|
+
export function featureKeysWithDestination(destination) {
|
|
700
|
+
return Object.keys(INSTANCE_FEATURE_PLACEMENT).filter((key) => INSTANCE_FEATURE_PLACEMENT[key].destination === destination);
|
|
701
|
+
}
|
|
702
|
+
export function featurePlacement(key, destination) {
|
|
703
|
+
const placement = INSTANCE_FEATURE_PLACEMENT[key];
|
|
704
|
+
return placement.destination === destination ? placement : null;
|
|
705
|
+
}
|
|
706
|
+
export const PERMANENT_FEATURE_KEYS = featureKeysWithDestination("permanent");
|
|
707
|
+
export const REMOVED_FEATURE_KEYS = featureKeysWithDestination("removed");
|
|
708
|
+
export const FEATURE_PRESET_IDS = ["minimal", "standard", "everything"];
|
|
709
|
+
export const FEATURE_PRESETS = {
|
|
710
|
+
minimal: ["enableDecisions", "enableAgentChat", "enableChatConnectors"],
|
|
711
|
+
standard: [
|
|
712
|
+
"enableDecisions",
|
|
713
|
+
"enableAgentChat",
|
|
714
|
+
"enablePixelsOffice",
|
|
715
|
+
"enableStatusCards",
|
|
716
|
+
"enableSummaries",
|
|
717
|
+
"enableCases",
|
|
718
|
+
"enableChatConnectors",
|
|
719
|
+
"enableExternalObjects",
|
|
720
|
+
],
|
|
721
|
+
everything: featureKeysWithDestination("features").filter((key) => featurePlacement(key, "features")?.finished === true),
|
|
722
|
+
};
|
|
723
|
+
export const NEW_INSTALL_FEATURE_DEFAULTS = Object.fromEntries(FEATURE_PRESETS.standard.map((key) => [key, true]));
|
|
724
|
+
export function featurePresetPatch(preset) {
|
|
725
|
+
const included = new Set(FEATURE_PRESETS[preset]);
|
|
726
|
+
return Object.fromEntries(FEATURE_PRESETS.everything.map((key) => [key, included.has(key)]));
|
|
727
|
+
}
|
|
728
|
+
export function activeFeaturePreset(settings) {
|
|
729
|
+
return (FEATURE_PRESET_IDS.find((preset) => {
|
|
730
|
+
const patch = featurePresetPatch(preset);
|
|
731
|
+
return Object.entries(patch).every(([key, on]) => (settings[key] === true) === on);
|
|
732
|
+
}) ?? null);
|
|
733
|
+
}
|
|
734
|
+
export function featureRequirements(key) {
|
|
735
|
+
const placement = INSTANCE_FEATURE_PLACEMENT[key];
|
|
736
|
+
return placement?.destination === "features" || placement?.destination === "advanced" ? placement.requires : [];
|
|
737
|
+
}
|
|
738
|
+
export function featureDependents(key) {
|
|
739
|
+
return INSTANCE_FEATURE_KEYS.filter((candidate) => featureRequirements(candidate).includes(key));
|
|
740
|
+
}
|
|
741
|
+
export function withDependentsDisabled(patch) {
|
|
742
|
+
const result = { ...patch };
|
|
743
|
+
const disable = (key) => {
|
|
744
|
+
for (const dependent of featureDependents(key)) {
|
|
745
|
+
if (result[dependent] === false)
|
|
746
|
+
continue;
|
|
747
|
+
result[dependent] = false;
|
|
748
|
+
disable(dependent);
|
|
749
|
+
}
|
|
750
|
+
};
|
|
751
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
752
|
+
if (value === false)
|
|
753
|
+
disable(key);
|
|
754
|
+
}
|
|
755
|
+
return result;
|
|
756
|
+
}
|
|
757
|
+
export function withRequirementsEnabled(patch) {
|
|
758
|
+
const result = { ...patch };
|
|
759
|
+
const enable = (key) => {
|
|
760
|
+
for (const required of featureRequirements(key)) {
|
|
761
|
+
if (result[required] !== undefined)
|
|
762
|
+
continue;
|
|
763
|
+
result[required] = true;
|
|
764
|
+
enable(required);
|
|
765
|
+
}
|
|
766
|
+
};
|
|
767
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
768
|
+
if (value === true)
|
|
769
|
+
enable(key);
|
|
770
|
+
}
|
|
771
|
+
return result;
|
|
772
|
+
}
|
|
773
|
+
export function withUnmetRequirementsDisabled(settings) {
|
|
774
|
+
const result = { ...settings };
|
|
775
|
+
let changed = true;
|
|
776
|
+
while (changed) {
|
|
777
|
+
changed = false;
|
|
778
|
+
for (const key of INSTANCE_FEATURE_KEYS) {
|
|
779
|
+
if (result[key] === true && missingFeatureRequirements(key, result).length > 0) {
|
|
780
|
+
result[key] = false;
|
|
781
|
+
changed = true;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
return result;
|
|
786
|
+
}
|
|
787
|
+
export function missingFeatureRequirements(key, settings) {
|
|
788
|
+
return featureRequirements(key).filter((required) => settings[required] !== true);
|
|
789
|
+
}
|
|
331
790
|
/**
|
|
332
791
|
* Shape of the `feature-catalog.json` release artifact the cloud harness
|
|
333
792
|
* imports per app release and validates feature writes against.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-catalog.js","sourceRoot":"","sources":["../src/feature-catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feature-catalog.js","sourceRoot":"","sources":["../src/feature-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { FEATURE_TIERS, INSTANCE_FEATURE_CATALOG, INSTANCE_FEATURE_KEYS, buildFeatureCatalogArtifact, featureCatalogArtifactSchema, renderFeatureCatalogArtifact, } from "./feature-catalog.js";
|
|
3
|
+
import { FEATURE_DESTINATIONS, FEATURE_PRESETS, FEATURE_TIERS, INSTANCE_FEATURE_CATALOG, INSTANCE_FEATURE_KEYS, INSTANCE_FEATURE_PLACEMENT, NEW_INSTALL_FEATURE_DEFAULTS, activeFeaturePreset, featureKeysWithDestination, featurePlacement, featurePresetPatch, featureRequirements, missingFeatureRequirements, withDependentsDisabled, buildFeatureCatalogArtifact, featureCatalogArtifactSchema, renderFeatureCatalogArtifact, } from "./feature-catalog.js";
|
|
4
4
|
import { instanceExperimentalSettingsSchema } from "./validators/instance.js";
|
|
5
5
|
function schemaBooleanFlagKeys() {
|
|
6
6
|
return Object.entries(instanceExperimentalSettingsSchema.shape)
|
|
@@ -86,4 +86,118 @@ describe("renderFeatureCatalogArtifact", () => {
|
|
|
86
86
|
expect(parsed).toEqual(buildFeatureCatalogArtifact("2026.720.0"));
|
|
87
87
|
});
|
|
88
88
|
});
|
|
89
|
+
describe("INSTANCE_FEATURE_PLACEMENT", () => {
|
|
90
|
+
it("gives every catalog key exactly one known destination", () => {
|
|
91
|
+
expect(Object.keys(INSTANCE_FEATURE_PLACEMENT).sort()).toEqual([...INSTANCE_FEATURE_KEYS]);
|
|
92
|
+
const perKey = INSTANCE_FEATURE_KEYS.map((key) => FEATURE_DESTINATIONS.filter((destination) => featureKeysWithDestination(destination).includes(key)).length);
|
|
93
|
+
expect(perKey.every((count) => count === 1)).toBe(true);
|
|
94
|
+
});
|
|
95
|
+
it("splits the 44 keys into 24 features, 11 advanced, 5 permanent, 3 removed, and 1 merged", () => {
|
|
96
|
+
expect(INSTANCE_FEATURE_KEYS).toHaveLength(44);
|
|
97
|
+
const counts = Object.fromEntries(FEATURE_DESTINATIONS.map((destination) => [destination, featureKeysWithDestination(destination).length]));
|
|
98
|
+
expect(counts).toEqual({ features: 24, advanced: 11, permanent: 5, removed: 3, merged: 1 });
|
|
99
|
+
});
|
|
100
|
+
it("groups features into five groups and advanced settings into developer and runtime", () => {
|
|
101
|
+
const groupCount = (destination) => {
|
|
102
|
+
const counts = {};
|
|
103
|
+
for (const key of featureKeysWithDestination(destination)) {
|
|
104
|
+
const group = featurePlacement(key, destination).group;
|
|
105
|
+
counts[group] = (counts[group] ?? 0) + 1;
|
|
106
|
+
}
|
|
107
|
+
return counts;
|
|
108
|
+
};
|
|
109
|
+
expect(groupCount("features")).toEqual({
|
|
110
|
+
collaboration: 7,
|
|
111
|
+
automation: 6,
|
|
112
|
+
integrations: 7,
|
|
113
|
+
workspace: 2,
|
|
114
|
+
display: 2,
|
|
115
|
+
});
|
|
116
|
+
expect(groupCount("advanced")).toEqual({ developer: 4, runtime: 7 });
|
|
117
|
+
});
|
|
118
|
+
it("makes the K-1 compatibility keys permanent and removes the K-2 keys with the classic interface", () => {
|
|
119
|
+
expect(featureKeysWithDestination("permanent").sort()).toEqual([
|
|
120
|
+
"enableApps",
|
|
121
|
+
"enableExperimentalFileViewer",
|
|
122
|
+
"enableMcpAggregators",
|
|
123
|
+
"enableStreamlinedLeftNavigation",
|
|
124
|
+
"enableStreamlinedUi",
|
|
125
|
+
].sort());
|
|
126
|
+
expect(featureKeysWithDestination("removed").sort()).toEqual(["enableAiConnectionRouters", "enableClassicTaskInterface", "enableRunnerPreviewIngress"].sort());
|
|
127
|
+
expect(INSTANCE_FEATURE_PLACEMENT.enableIsolatedWorkspacesByDefault).toMatchObject({
|
|
128
|
+
destination: "merged",
|
|
129
|
+
into: "enableIsolatedWorkspaces",
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
it("marks exactly the five K-3 features as not finished", () => {
|
|
133
|
+
const unfinished = featureKeysWithDestination("features").filter((key) => featurePlacement(key, "features").finished === false);
|
|
134
|
+
expect(unfinished.sort()).toEqual([
|
|
135
|
+
"enableFastResponses",
|
|
136
|
+
"enableFirstTaskPlanProposal",
|
|
137
|
+
"enableGitHubReviewBots",
|
|
138
|
+
"enableMemoryConnectors",
|
|
139
|
+
"enableSimplifiedEnglishInteractions",
|
|
140
|
+
].sort());
|
|
141
|
+
});
|
|
142
|
+
it("only lets features and advanced settings depend on keys that stay switchable", () => {
|
|
143
|
+
for (const key of INSTANCE_FEATURE_KEYS) {
|
|
144
|
+
for (const required of featureRequirements(key)) {
|
|
145
|
+
expect(["features", "advanced"]).toContain(INSTANCE_FEATURE_PLACEMENT[required].destination);
|
|
146
|
+
expect(featureRequirements(required)).not.toContain(key);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
describe("FEATURE_PRESETS", () => {
|
|
152
|
+
it("holds 3, 8, and 19 finished features", () => {
|
|
153
|
+
expect(FEATURE_PRESETS.minimal).toHaveLength(3);
|
|
154
|
+
expect(FEATURE_PRESETS.standard).toHaveLength(8);
|
|
155
|
+
expect(FEATURE_PRESETS.everything).toHaveLength(19);
|
|
156
|
+
for (const key of [...FEATURE_PRESETS.minimal, ...FEATURE_PRESETS.standard]) {
|
|
157
|
+
expect(FEATURE_PRESETS.everything).toContain(key);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
it("keeps every requirement of a preset feature inside the same preset", () => {
|
|
161
|
+
for (const keys of Object.values(FEATURE_PRESETS)) {
|
|
162
|
+
for (const key of keys) {
|
|
163
|
+
for (const required of featureRequirements(key))
|
|
164
|
+
expect(keys).toContain(required);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
it("seeds new installs with exactly the Standard preset", () => {
|
|
169
|
+
expect(Object.keys(NEW_INSTALL_FEATURE_DEFAULTS).sort()).toEqual([...FEATURE_PRESETS.standard].sort());
|
|
170
|
+
expect(Object.values(NEW_INSTALL_FEATURE_DEFAULTS).every((value) => value === true)).toBe(true);
|
|
171
|
+
});
|
|
172
|
+
it("writes only finished features when a preset is applied and recognizes the result", () => {
|
|
173
|
+
const patch = featurePresetPatch("minimal");
|
|
174
|
+
expect(Object.keys(patch).sort()).toEqual([...FEATURE_PRESETS.everything].sort());
|
|
175
|
+
expect(Object.entries(patch).filter(([, on]) => on).map(([key]) => key).sort()).toEqual([...FEATURE_PRESETS.minimal].sort());
|
|
176
|
+
expect(activeFeaturePreset({ ...patch, enableMemoryConnectors: true })).toBe("minimal");
|
|
177
|
+
expect(activeFeaturePreset({ ...patch, enableCases: true })).toBeNull();
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
describe("feature dependencies", () => {
|
|
181
|
+
it("reports the requirements that are still off", () => {
|
|
182
|
+
expect(missingFeatureRequirements("enablePipelines", {})).toEqual(["enableCases"]);
|
|
183
|
+
expect(missingFeatureRequirements("enablePipelines", { enableCases: true })).toEqual([]);
|
|
184
|
+
expect(missingFeatureRequirements("enableOpenAiDot", { enablePublicMcp: false })).toEqual(["enablePublicMcp"]);
|
|
185
|
+
expect(missingFeatureRequirements("enableCases", {})).toEqual([]);
|
|
186
|
+
});
|
|
187
|
+
it("turns dependents off with the requirement they need", () => {
|
|
188
|
+
expect(withDependentsDisabled({ enableCases: false })).toEqual({ enableCases: false, enablePipelines: false });
|
|
189
|
+
expect(withDependentsDisabled({ enableSummaries: false })).toEqual({
|
|
190
|
+
enableSummaries: false,
|
|
191
|
+
enableStatusCards: false,
|
|
192
|
+
});
|
|
193
|
+
expect(withDependentsDisabled({ enablePublicMcp: false })).toEqual({
|
|
194
|
+
enablePublicMcp: false,
|
|
195
|
+
enableOpenAiDot: false,
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
it("never turns a requirement on as a side effect", () => {
|
|
199
|
+
expect(withDependentsDisabled({ enablePipelines: true })).toEqual({ enablePipelines: true });
|
|
200
|
+
expect(withDependentsDisabled({ enableOpenAiDot: true })).toEqual({ enableOpenAiDot: true });
|
|
201
|
+
});
|
|
202
|
+
});
|
|
89
203
|
//# sourceMappingURL=feature-catalog.test.js.map
|