@ydtb/tk-scope-capture 0.22.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.
Files changed (74) hide show
  1. package/LICENSE +21 -0
  2. package/dist/src/client/pages/CaptureBuilderPage.d.ts +2 -0
  3. package/dist/src/client/pages/CaptureBuilderPage.d.ts.map +1 -0
  4. package/dist/src/client/pages/CaptureBuilderPage.js +308 -0
  5. package/dist/src/client/pages/CaptureBuilderPage.js.map +1 -0
  6. package/dist/src/client/pages/CaptureSubmissionDetailPage.d.ts +2 -0
  7. package/dist/src/client/pages/CaptureSubmissionDetailPage.d.ts.map +1 -0
  8. package/dist/src/client/pages/CaptureSubmissionDetailPage.js +64 -0
  9. package/dist/src/client/pages/CaptureSubmissionDetailPage.js.map +1 -0
  10. package/dist/src/client/pages/CaptureSubmissionsPage.d.ts +2 -0
  11. package/dist/src/client/pages/CaptureSubmissionsPage.d.ts.map +1 -0
  12. package/dist/src/client/pages/CaptureSubmissionsPage.js +22 -0
  13. package/dist/src/client/pages/CaptureSubmissionsPage.js.map +1 -0
  14. package/dist/src/client/pages/PublicFormPage.d.ts +2 -0
  15. package/dist/src/client/pages/PublicFormPage.d.ts.map +1 -0
  16. package/dist/src/client/pages/PublicFormPage.js +62 -0
  17. package/dist/src/client/pages/PublicFormPage.js.map +1 -0
  18. package/dist/src/client/pages/PublicQuizPage.d.ts +2 -0
  19. package/dist/src/client/pages/PublicQuizPage.d.ts.map +1 -0
  20. package/dist/src/client/pages/PublicQuizPage.js +87 -0
  21. package/dist/src/client/pages/PublicQuizPage.js.map +1 -0
  22. package/dist/src/client/pages/QuizBuilderPage.d.ts +2 -0
  23. package/dist/src/client/pages/QuizBuilderPage.d.ts.map +1 -0
  24. package/dist/src/client/pages/QuizBuilderPage.js +118 -0
  25. package/dist/src/client/pages/QuizBuilderPage.js.map +1 -0
  26. package/dist/src/client.d.ts +617 -0
  27. package/dist/src/client.d.ts.map +1 -0
  28. package/dist/src/client.js +39 -0
  29. package/dist/src/client.js.map +1 -0
  30. package/dist/src/index.d.ts +3 -0
  31. package/dist/src/index.d.ts.map +1 -0
  32. package/dist/src/index.js +2 -0
  33. package/dist/src/index.js.map +1 -0
  34. package/dist/src/server/api/action-adapters.d.ts +93 -0
  35. package/dist/src/server/api/action-adapters.d.ts.map +1 -0
  36. package/dist/src/server/api/action-adapters.js +147 -0
  37. package/dist/src/server/api/action-adapters.js.map +1 -0
  38. package/dist/src/server/api/router.d.ts +621 -0
  39. package/dist/src/server/api/router.d.ts.map +1 -0
  40. package/dist/src/server/api/router.js +903 -0
  41. package/dist/src/server/api/router.js.map +1 -0
  42. package/dist/src/server.d.ts +3 -0
  43. package/dist/src/server.d.ts.map +1 -0
  44. package/dist/src/server.js +15 -0
  45. package/dist/src/server.js.map +1 -0
  46. package/dist/src/shared/conditions.d.ts +5 -0
  47. package/dist/src/shared/conditions.d.ts.map +1 -0
  48. package/dist/src/shared/conditions.js +39 -0
  49. package/dist/src/shared/conditions.js.map +1 -0
  50. package/dist/src/shared/db/schema.d.ts +983 -0
  51. package/dist/src/shared/db/schema.d.ts.map +1 -0
  52. package/dist/src/shared/db/schema.js +113 -0
  53. package/dist/src/shared/db/schema.js.map +1 -0
  54. package/dist/src/shared/field-types.d.ts +7 -0
  55. package/dist/src/shared/field-types.d.ts.map +1 -0
  56. package/dist/src/shared/field-types.js +116 -0
  57. package/dist/src/shared/field-types.js.map +1 -0
  58. package/dist/src/shared/scoring.d.ts +3 -0
  59. package/dist/src/shared/scoring.d.ts.map +1 -0
  60. package/dist/src/shared/scoring.js +47 -0
  61. package/dist/src/shared/scoring.js.map +1 -0
  62. package/dist/src/shared/templates.d.ts +20 -0
  63. package/dist/src/shared/templates.d.ts.map +1 -0
  64. package/dist/src/shared/templates.js +122 -0
  65. package/dist/src/shared/templates.js.map +1 -0
  66. package/dist/src/shared/tool.d.ts +2 -0
  67. package/dist/src/shared/tool.d.ts.map +1 -0
  68. package/dist/src/shared/tool.js +7 -0
  69. package/dist/src/shared/tool.js.map +1 -0
  70. package/dist/src/shared/types.d.ts +251 -0
  71. package/dist/src/shared/types.d.ts.map +1 -0
  72. package/dist/src/shared/types.js +10 -0
  73. package/dist/src/shared/types.js.map +1 -0
  74. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/shared/db/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB9B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AAEzE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB/B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,YAAY,CAAA;AACxE,MAAM,MAAM,qBAAqB,GAAG,OAAO,mBAAmB,CAAC,YAAY,CAAA;AAE3E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC9B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAA;AAEzE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyB1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAA;AAEjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA;AACpE,MAAM,MAAM,mBAAmB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA"}
@@ -0,0 +1,113 @@
1
+ import { pgTable, text, timestamp, jsonb, index, uniqueIndex } from "@ydtb/tk-scope-db/pg-core";
2
+ import { generateId } from "@ydtb/tk-scope-db/id";
3
+ import { scopeColumns, scopeForeignKey, scopeIndex } from "@ydtb/tk-scope-db/columns";
4
+ export const captureDefinitions = pgTable("capture_definitions", {
5
+ id: text("id")
6
+ .primaryKey()
7
+ .$defaultFn(() => generateId()),
8
+ ...scopeColumns(),
9
+ surface: text("surface").notNull().default("form"),
10
+ name: text("name").notNull(),
11
+ slug: text("slug").notNull(),
12
+ status: text("status").notNull().default("draft"),
13
+ fields: jsonb("fields").$type().notNull().default([]),
14
+ actionConfig: jsonb("actionConfig").$type().notNull().default({}),
15
+ createdAt: timestamp("createdAt").defaultNow().notNull(),
16
+ updatedAt: timestamp("updatedAt").defaultNow().notNull(),
17
+ }, (table) => [
18
+ scopeForeignKey(table),
19
+ scopeIndex(table),
20
+ uniqueIndex("capture_definitions_scope_scopeId_slug_idx").on(table.scope, table.scopeId, table.slug),
21
+ index("capture_definitions_scope_scopeId_surface_idx").on(table.scope, table.scopeId, table.surface),
22
+ ]);
23
+ export const capturePublications = pgTable("capture_publications", {
24
+ id: text("id")
25
+ .primaryKey()
26
+ .$defaultFn(() => generateId()),
27
+ ...scopeColumns(),
28
+ definitionId: text("definitionId")
29
+ .notNull()
30
+ .references(() => captureDefinitions.id, { onDelete: "cascade" }),
31
+ slug: text("slug").notNull(),
32
+ status: text("status").notNull().default("active"),
33
+ security: jsonb("security").$type().notNull().default({}),
34
+ revokedAt: timestamp("revokedAt"),
35
+ createdAt: timestamp("createdAt").defaultNow().notNull(),
36
+ updatedAt: timestamp("updatedAt").defaultNow().notNull(),
37
+ }, (table) => [
38
+ scopeForeignKey(table),
39
+ scopeIndex(table),
40
+ uniqueIndex("capture_publications_slug_idx").on(table.slug),
41
+ uniqueIndex("capture_publications_definitionId_idx").on(table.definitionId),
42
+ ]);
43
+ export const captureSubmissions = pgTable("capture_submissions", {
44
+ id: text("id")
45
+ .primaryKey()
46
+ .$defaultFn(() => generateId()),
47
+ ...scopeColumns(),
48
+ definitionId: text("definitionId")
49
+ .notNull()
50
+ .references(() => captureDefinitions.id, { onDelete: "cascade" }),
51
+ publicationId: text("publicationId").references(() => capturePublications.id, { onDelete: "set null" }),
52
+ source: text("source").notNull().default("public"),
53
+ snapshot: jsonb("snapshot").$type().notNull(),
54
+ respondent: jsonb("respondent").$type().notNull().default({}),
55
+ respondentKey: text("respondentKey"),
56
+ submittedAt: timestamp("submittedAt").defaultNow().notNull(),
57
+ createdAt: timestamp("createdAt").defaultNow().notNull(),
58
+ }, (table) => [
59
+ scopeForeignKey(table),
60
+ scopeIndex(table),
61
+ index("capture_submissions_scope_scopeId_definitionId_idx").on(table.scope, table.scopeId, table.definitionId),
62
+ index("capture_submissions_scope_scopeId_submittedAt_idx").on(table.scope, table.scopeId, table.submittedAt),
63
+ index("capture_submissions_publicationId_respondentKey_idx").on(table.publicationId, table.respondentKey),
64
+ ]);
65
+ export const captureAnswers = pgTable("capture_answers", {
66
+ id: text("id")
67
+ .primaryKey()
68
+ .$defaultFn(() => generateId()),
69
+ ...scopeColumns(),
70
+ submissionId: text("submissionId")
71
+ .notNull()
72
+ .references(() => captureSubmissions.id, { onDelete: "cascade" }),
73
+ definitionId: text("definitionId")
74
+ .notNull()
75
+ .references(() => captureDefinitions.id, { onDelete: "cascade" }),
76
+ fieldId: text("fieldId").notNull(),
77
+ fieldKey: text("fieldKey").notNull(),
78
+ value: jsonb("value").$type().notNull(),
79
+ createdAt: timestamp("createdAt").defaultNow().notNull(),
80
+ }, (table) => [
81
+ scopeForeignKey(table),
82
+ scopeIndex(table),
83
+ index("capture_answers_submissionId_idx").on(table.submissionId),
84
+ index("capture_answers_scope_scopeId_definitionId_idx").on(table.scope, table.scopeId, table.definitionId),
85
+ index("capture_answers_fieldKey_idx").on(table.fieldKey),
86
+ ]);
87
+ export const captureActionRuns = pgTable("capture_action_runs", {
88
+ id: text("id")
89
+ .primaryKey()
90
+ .$defaultFn(() => generateId()),
91
+ ...scopeColumns(),
92
+ submissionId: text("submissionId")
93
+ .notNull()
94
+ .references(() => captureSubmissions.id, { onDelete: "cascade" }),
95
+ definitionId: text("definitionId")
96
+ .notNull()
97
+ .references(() => captureDefinitions.id, { onDelete: "cascade" }),
98
+ actionType: text("actionType").notNull(),
99
+ status: text("status").notNull(),
100
+ contactId: text("contactId"),
101
+ result: jsonb("result").$type(),
102
+ error: jsonb("error").$type(),
103
+ manualAttempts: jsonb("manualAttempts").$type().notNull().default([]),
104
+ createdAt: timestamp("createdAt").defaultNow().notNull(),
105
+ updatedAt: timestamp("updatedAt").defaultNow().notNull(),
106
+ }, (table) => [
107
+ scopeForeignKey(table),
108
+ scopeIndex(table),
109
+ index("capture_action_runs_submissionId_idx").on(table.submissionId),
110
+ index("capture_action_runs_scope_scopeId_definitionId_idx").on(table.scope, table.scopeId, table.definitionId),
111
+ index("capture_action_runs_contactId_idx").on(table.contactId),
112
+ ]);
113
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/shared/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAYrF,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CACvC,qBAAqB,EACrB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACjC,GAAG,YAAY,EAAE;IACjB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACjD,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAA4B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/E,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,EAAuB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtF,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACxD,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CACzD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,eAAe,CAAC,KAAK,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC;IACjB,WAAW,CAAC,4CAA4C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;IACpG,KAAK,CAAC,+CAA+C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;CACrG,CACF,CAAA;AAKD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CACxC,sBAAsB,EACtB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACjC,GAAG,YAAY,EAAE;IACjB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClD,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA8B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrF,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACxD,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CACzD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,eAAe,CAAC,KAAK,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC;IACjB,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3D,WAAW,CAAC,uCAAuC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;CAC5E,CACF,CAAA;AAKD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CACvC,qBAAqB,EACrB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACjC,GAAG,YAAY,EAAE;IACjB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvG,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClD,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAA6B,CAAC,OAAO,EAAE;IACxE,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,EAA2B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtF,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC;IACpC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IAC5D,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CACzD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,eAAe,CAAC,KAAK,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC;IACjB,KAAK,CAAC,oDAAoD,CAAC,CAAC,EAAE,CAC5D,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,YAAY,CACnB;IACD,KAAK,CAAC,mDAAmD,CAAC,CAAC,EAAE,CAC3D,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,CAClB;IACD,KAAK,CAAC,qDAAqD,CAAC,CAAC,EAAE,CAC7D,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,CACpB;CACF,CACF,CAAA;AAKD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CACnC,iBAAiB,EACjB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACjC,GAAG,YAAY,EAAE;IACjB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACpC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAsB,CAAC,OAAO,EAAE;IAC3D,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CACzD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,eAAe,CAAC,KAAK,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC;IACjB,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;IAChE,KAAK,CAAC,gDAAgD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1G,KAAK,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;CACzD,CACF,CAAA;AAKD,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CACtC,qBAAqB,EACrB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;SACX,UAAU,EAAE;SACZ,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACjC,GAAG,YAAY,EAAE;IACjB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACxC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAChC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;IAC5B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAA0B;IACvD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAyB;IACpD,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAA+B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClG,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;IACxD,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;CACzD,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,eAAe,CAAC,KAAK,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC;IACjB,KAAK,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;IACpE,KAAK,CAAC,oDAAoD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;IAC9G,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC/D,CACF,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { CaptureAnswerValue, CaptureFieldDefinition, CaptureFieldTypeContribution } from "./types.ts";
2
+ export declare const BASE_CAPTURE_FIELD_TYPES: CaptureFieldTypeContribution[];
3
+ export declare const REFERENCE_CAPTURE_FIELD_TYPES: CaptureFieldTypeContribution[];
4
+ export declare function getCaptureFieldType(fieldType: string, contributions?: CaptureFieldTypeContribution[]): CaptureFieldTypeContribution;
5
+ export declare function normalizeCaptureAnswer(field: CaptureFieldDefinition, value: CaptureAnswerValue | undefined, contributions?: CaptureFieldTypeContribution[]): CaptureAnswerValue;
6
+ export declare function validateCaptureAnswer(field: CaptureFieldDefinition, value: CaptureAnswerValue, contributions?: CaptureFieldTypeContribution[]): string | null;
7
+ //# sourceMappingURL=field-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/shared/field-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAE1G,eAAO,MAAM,wBAAwB,EAAE,4BAA4B,EA6DlE,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,4BAA4B,EAavE,CAAA;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,4BAA4B,EAAO,GACjD,4BAA4B,CAG9B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,aAAa,GAAE,4BAA4B,EAAO,GACjD,kBAAkB,CAgBpB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,kBAAkB,EACzB,aAAa,GAAE,4BAA4B,EAAO,GACjD,MAAM,GAAG,IAAI,CAcf"}
@@ -0,0 +1,116 @@
1
+ export const BASE_CAPTURE_FIELD_TYPES = [
2
+ {
3
+ id: "text",
4
+ kind: "field",
5
+ label: "Text",
6
+ description: "Single-line response field",
7
+ icon: "Type",
8
+ renderer: "text",
9
+ defaultField: { type: "text", label: "Text", required: false },
10
+ validation: { requiredAware: true },
11
+ normalization: { valueKind: "string", trim: true },
12
+ mapping: { compatibleTargets: ["text", "name", "custom"] },
13
+ },
14
+ {
15
+ id: "email",
16
+ kind: "field",
17
+ label: "Email",
18
+ description: "Email address field",
19
+ icon: "Mail",
20
+ renderer: "email",
21
+ defaultField: { type: "email", label: "Email", required: true },
22
+ validation: { requiredAware: true },
23
+ normalization: { valueKind: "string", trim: true },
24
+ mapping: { compatibleTargets: ["email", "custom"] },
25
+ },
26
+ {
27
+ id: "phone",
28
+ kind: "field",
29
+ label: "Phone",
30
+ description: "Phone number field",
31
+ icon: "Phone",
32
+ renderer: "phone",
33
+ defaultField: { type: "phone", label: "Phone", required: false },
34
+ validation: { requiredAware: true },
35
+ normalization: { valueKind: "string", trim: true },
36
+ mapping: { compatibleTargets: ["phone", "custom"] },
37
+ },
38
+ {
39
+ id: "textarea",
40
+ kind: "field",
41
+ label: "Textarea",
42
+ description: "Long-form response field",
43
+ icon: "AlignLeft",
44
+ renderer: "textarea",
45
+ defaultField: { type: "textarea", label: "Textarea", required: false },
46
+ validation: { requiredAware: true },
47
+ normalization: { valueKind: "string", trim: true },
48
+ mapping: { compatibleTargets: ["text", "custom"] },
49
+ },
50
+ {
51
+ id: "select",
52
+ kind: "field",
53
+ label: "Select",
54
+ description: "Single-choice option field",
55
+ icon: "ListTree",
56
+ renderer: "select",
57
+ defaultField: { type: "select", label: "Select", required: false, options: ["Option 1", "Option 2"] },
58
+ validation: { requiredAware: true },
59
+ normalization: { valueKind: "string", trim: true },
60
+ mapping: { compatibleTargets: ["text", "custom"] },
61
+ },
62
+ ];
63
+ export const REFERENCE_CAPTURE_FIELD_TYPES = [
64
+ {
65
+ id: "rating",
66
+ kind: "field",
67
+ label: "Rating",
68
+ description: "Contributed 1–5 rating field",
69
+ icon: "Star",
70
+ renderer: "rating",
71
+ defaultField: { type: "rating", label: "Rating", required: false, metadata: { min: 1, max: 5 } },
72
+ validation: { requiredAware: true, min: 1, max: 5 },
73
+ normalization: { valueKind: "number" },
74
+ mapping: { compatibleTargets: ["number", "custom"] },
75
+ },
76
+ ];
77
+ export function getCaptureFieldType(fieldType, contributions = []) {
78
+ return [...BASE_CAPTURE_FIELD_TYPES, ...contributions].find((definition) => definition.id === fieldType)
79
+ ?? BASE_CAPTURE_FIELD_TYPES[0];
80
+ }
81
+ export function normalizeCaptureAnswer(field, value, contributions = []) {
82
+ const definition = getCaptureFieldType(field.type, contributions);
83
+ if (value === undefined || value === null)
84
+ return null;
85
+ if (definition.normalization.valueKind === "number") {
86
+ const numberValue = typeof value === "number" ? value : Number(value);
87
+ return Number.isFinite(numberValue) ? numberValue : null;
88
+ }
89
+ if (definition.normalization.valueKind === "stringArray") {
90
+ return Array.isArray(value) ? value.map(String) : [String(value)];
91
+ }
92
+ if (typeof value === "string")
93
+ return definition.normalization.trim ? value.trim() : value;
94
+ if (Array.isArray(value))
95
+ return value.join(", ");
96
+ return String(value);
97
+ }
98
+ export function validateCaptureAnswer(field, value, contributions = []) {
99
+ const definition = getCaptureFieldType(field.type, contributions);
100
+ const isEmpty = value === null || value === "" || (Array.isArray(value) && value.length === 0);
101
+ if (field.required && isEmpty)
102
+ return `${field.label} is required`;
103
+ if (isEmpty)
104
+ return null;
105
+ if (definition.validation?.min !== undefined || definition.validation?.max !== undefined) {
106
+ const numberValue = typeof value === "number" ? value : Number(value);
107
+ if (!Number.isFinite(numberValue))
108
+ return `${field.label} must be a number`;
109
+ if (definition.validation.min !== undefined && numberValue < definition.validation.min)
110
+ return `${field.label} must be at least ${definition.validation.min}`;
111
+ if (definition.validation.max !== undefined && numberValue > definition.validation.max)
112
+ return `${field.label} must be at most ${definition.validation.max}`;
113
+ }
114
+ return null;
115
+ }
116
+ //# sourceMappingURL=field-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-types.js","sourceRoot":"","sources":["../../../src/shared/field-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CaptureAnswerValue, CaptureQuizOutcomeResult, CaptureQuizScoringConfig } from "./types.ts";
2
+ export declare function evaluateQuizOutcome(config: CaptureQuizScoringConfig | undefined, answers: Record<string, CaptureAnswerValue>): CaptureQuizOutcomeResult | undefined;
3
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/shared/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,YAAY,CAAA;AAsBnB,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC1C,wBAAwB,GAAG,SAAS,CA2BtC"}
@@ -0,0 +1,47 @@
1
+ function answerMatches(value, expected) {
2
+ if (Array.isArray(value))
3
+ return value.map(String).includes(String(expected ?? ""));
4
+ return String(value ?? "") === String(expected ?? "");
5
+ }
6
+ function stableHash(input) {
7
+ let hash = 5381;
8
+ for (let index = 0; index < input.length; index += 1) {
9
+ hash = (hash * 33) ^ input.charCodeAt(index);
10
+ }
11
+ return (hash >>> 0).toString(16);
12
+ }
13
+ function findOutcome(outcomes, key, score) {
14
+ if (key)
15
+ return outcomes.find((outcome) => outcome.key === key);
16
+ return outcomes
17
+ .filter((outcome) => (outcome.minScore ?? Number.NEGATIVE_INFINITY) <= score)
18
+ .sort((a, b) => (b.minScore ?? Number.NEGATIVE_INFINITY) - (a.minScore ?? Number.NEGATIVE_INFINITY))[0];
19
+ }
20
+ export function evaluateQuizOutcome(config, answers) {
21
+ if (!config?.enabled || config.outcomes.length === 0)
22
+ return undefined;
23
+ const matchedRules = [];
24
+ let score = 0;
25
+ let forcedOutcomeKey;
26
+ for (const rule of config.rules) {
27
+ if (!answerMatches(answers[rule.fieldKey], rule.equals))
28
+ continue;
29
+ matchedRules.push(rule);
30
+ score += rule.score ?? 0;
31
+ forcedOutcomeKey = rule.outcomeKey ?? forcedOutcomeKey;
32
+ }
33
+ const outcome = findOutcome(config.outcomes, forcedOutcomeKey, score) ?? config.outcomes[0];
34
+ if (!outcome)
35
+ return undefined;
36
+ return {
37
+ id: outcome.id,
38
+ key: outcome.key,
39
+ label: outcome.label,
40
+ bucket: outcome.bucket ?? outcome.key,
41
+ scoreSummary: { score, maxScore: config.rules.reduce((sum, rule) => sum + Math.max(0, rule.score ?? 0), 0) },
42
+ matchedRuleIds: matchedRules.map((rule) => rule.id),
43
+ configVersion: config.version,
44
+ configHash: stableHash(JSON.stringify(config)),
45
+ };
46
+ }
47
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/shared/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { CaptureActionConfig, CaptureFieldDefinition, CaptureQuizScoringConfig } from "./types.ts";
2
+ export interface CaptureFormTemplate {
3
+ id: string;
4
+ label: string;
5
+ description: string;
6
+ title: string;
7
+ fields: CaptureFieldDefinition[];
8
+ actionConfig?: CaptureActionConfig;
9
+ }
10
+ export interface CaptureQuizTemplate {
11
+ id: string;
12
+ label: string;
13
+ description: string;
14
+ title: string;
15
+ fields: CaptureFieldDefinition[];
16
+ scoring: CaptureQuizScoringConfig;
17
+ }
18
+ export declare const CAPTURE_FORM_TEMPLATES: CaptureFormTemplate[];
19
+ export declare const CAPTURE_QUIZ_TEMPLATES: CaptureQuizTemplate[];
20
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/shared/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAEvG,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,EAAE,CAAA;IAChC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,sBAAsB,EAAE,CAAA;IAChC,OAAO,EAAE,wBAAwB,CAAA;CAClC;AAID,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EA0CvD,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EA4EvD,CAAA"}
@@ -0,0 +1,122 @@
1
+ const page = (id, title) => ({ quizPageId: id, quizPageTitle: title });
2
+ export const CAPTURE_FORM_TEMPLATES = [
3
+ {
4
+ id: "opt-in",
5
+ label: "Opt-in form",
6
+ description: "A low-friction signup with warm promise copy and email capture.",
7
+ title: "Stay in the loop",
8
+ fields: [
9
+ { id: "optin-name", key: "name", label: "First name", type: "text", required: false },
10
+ { id: "optin-email", key: "email", label: "Best email", type: "email", required: true },
11
+ { id: "optin-interest", key: "interest", label: "What would be most useful right now?", type: "select", required: false, options: ["A simple checklist", "A deeper guide", "A short consult", "I'm still exploring"] },
12
+ ],
13
+ actionConfig: { contacts: { enabled: false, emailFieldKey: "email", nameFieldKey: "name", customFieldMappings: { capture_interest: "interest" } } },
14
+ },
15
+ {
16
+ id: "contact-request",
17
+ label: "Contact / request form",
18
+ description: "A straightforward request form that collects context without feeling heavy.",
19
+ title: "Tell us what you need",
20
+ fields: [
21
+ { id: "request-name", key: "name", label: "Your name", type: "text", required: true },
22
+ { id: "request-email", key: "email", label: "Email", type: "email", required: true },
23
+ { id: "request-phone", key: "phone", label: "Phone", type: "phone", required: false },
24
+ { id: "request-topic", key: "topic", label: "What is this about?", type: "select", required: true, options: ["New project", "Support", "Partnership", "Something else"] },
25
+ { id: "request-message", key: "message", label: "A few helpful details", type: "textarea", required: true },
26
+ ],
27
+ actionConfig: { contacts: { enabled: false, emailFieldKey: "email", nameFieldKey: "name", phoneFieldKey: "phone", customFieldMappings: { request_topic: "topic" } } },
28
+ },
29
+ {
30
+ id: "client-intake",
31
+ label: "Client intake form",
32
+ description: "A coaching-style intake that captures goals, timing, and constraints.",
33
+ title: "Start with the right context",
34
+ fields: [
35
+ { id: "intake-name", key: "name", label: "Name", type: "text", required: true },
36
+ { id: "intake-email", key: "email", label: "Email", type: "email", required: true },
37
+ { id: "intake-goal", key: "primary_goal", label: "What outcome are you hoping for?", type: "textarea", required: true },
38
+ { id: "intake-stage", key: "stage", label: "Where are you now?", type: "select", required: true, options: ["Just getting started", "Validating a direction", "Actively building", "Ready to scale"] },
39
+ { id: "intake-timeline", key: "timeline", label: "Ideal timeline", type: "select", required: false, options: ["This month", "This quarter", "Later this year", "No fixed timeline"] },
40
+ { id: "intake-constraints", key: "constraints", label: "Anything we should work around?", type: "textarea", required: false },
41
+ ],
42
+ actionConfig: { contacts: { enabled: false, emailFieldKey: "email", nameFieldKey: "name", customFieldMappings: { client_stage: "stage", client_timeline: "timeline" } } },
43
+ },
44
+ ];
45
+ export const CAPTURE_QUIZ_TEMPLATES = [
46
+ {
47
+ id: "readiness",
48
+ label: "Readiness quiz",
49
+ description: "Helps a respondent see whether they are ready for the next step.",
50
+ title: "Is now the right time?",
51
+ fields: [
52
+ { id: "ready-goal", key: "clear_goal", label: "Do you have a clear outcome in mind?", type: "select", required: true, options: ["yes", "not yet", "partly"], metadata: page("readiness-basics", "Start with clarity") },
53
+ { id: "ready-owner", key: "owner", label: "Is there one person who can own follow-through?", type: "select", required: true, options: ["yes", "no", "not sure"], metadata: page("readiness-basics", "Start with clarity") },
54
+ { id: "ready-time", key: "timeline", label: "When would you like to move?", type: "select", required: true, options: ["now", "soon", "later"], metadata: page("readiness-momentum", "Check momentum") },
55
+ ],
56
+ scoring: {
57
+ enabled: true,
58
+ version: 1,
59
+ outcomes: [
60
+ { id: "readiness-ready", key: "ready", label: "Ready for a focused next step", bucket: "ready", minScore: 3 },
61
+ { id: "readiness-prepare", key: "prepare", label: "Almost ready — clarify a few pieces first", bucket: "prepare", minScore: 1 },
62
+ { id: "readiness-explore", key: "explore", label: "Best next step: explore gently", bucket: "explore", minScore: 0 },
63
+ ],
64
+ rules: [
65
+ { id: "ready-goal-yes", fieldKey: "clear_goal", equals: "yes", score: 1 },
66
+ { id: "ready-owner-yes", fieldKey: "owner", equals: "yes", score: 1 },
67
+ { id: "ready-time-now", fieldKey: "timeline", equals: "now", score: 1 },
68
+ ],
69
+ },
70
+ },
71
+ {
72
+ id: "recommendation",
73
+ label: "Recommendation quiz",
74
+ description: "Guides respondents toward a practical recommendation path.",
75
+ title: "Find your best next move",
76
+ fields: [
77
+ { id: "rec-focus", key: "focus", label: "What needs the most attention?", type: "select", required: true, options: ["strategy", "systems", "support"], metadata: page("rec-context", "Name the pressure") },
78
+ { id: "rec-capacity", key: "capacity", label: "How much capacity do you have this month?", type: "select", required: true, options: ["low", "medium", "high"], metadata: page("rec-context", "Name the pressure") },
79
+ { id: "rec-confidence", key: "confidence", label: "How confident do you feel about the next step?", type: "rating", required: true, metadata: { ...page("rec-fit", "Shape the recommendation"), min: 1, max: 5 } },
80
+ ],
81
+ scoring: {
82
+ enabled: true,
83
+ version: 1,
84
+ outcomes: [
85
+ { id: "rec-accelerate", key: "accelerate", label: "Accelerate with a focused plan", bucket: "accelerate", minScore: 4 },
86
+ { id: "rec-stabilize", key: "stabilize", label: "Stabilize the foundation first", bucket: "stabilize", minScore: 2 },
87
+ { id: "rec-simplify", key: "simplify", label: "Simplify before adding more", bucket: "simplify", minScore: 0 },
88
+ ],
89
+ rules: [
90
+ { id: "rec-capacity-high", fieldKey: "capacity", equals: "high", score: 2 },
91
+ { id: "rec-confidence-4", fieldKey: "confidence", equals: 4, score: 1 },
92
+ { id: "rec-confidence-5", fieldKey: "confidence", equals: 5, score: 2, outcomeKey: "accelerate" },
93
+ ],
94
+ },
95
+ },
96
+ {
97
+ id: "segmentation",
98
+ label: "Segmentation quiz",
99
+ description: "Routes respondents into useful buckets for follow-up and content.",
100
+ title: "Choose the support that fits",
101
+ fields: [
102
+ { id: "seg-role", key: "role", label: "Which description fits you best?", type: "select", required: true, options: ["founder", "operator", "creator", "advisor"], metadata: page("seg-profile", "A little context") },
103
+ { id: "seg-priority", key: "priority", label: "What kind of support would help most?", type: "select", required: true, options: ["clarity", "implementation", "accountability"], metadata: page("seg-profile", "A little context") },
104
+ { id: "seg-style", key: "style", label: "What pace feels sustainable?", type: "select", required: true, options: ["steady", "sprint", "light-touch"], metadata: page("seg-followup", "Match the follow-up") },
105
+ ],
106
+ scoring: {
107
+ enabled: true,
108
+ version: 1,
109
+ outcomes: [
110
+ { id: "seg-builder", key: "builder", label: "Builder track", bucket: "builder", minScore: 2 },
111
+ { id: "seg-guide", key: "guide", label: "Guided clarity track", bucket: "guide", minScore: 1 },
112
+ { id: "seg-nurture", key: "nurture", label: "Nurture track", bucket: "nurture", minScore: 0 },
113
+ ],
114
+ rules: [
115
+ { id: "seg-implementation", fieldKey: "priority", equals: "implementation", score: 2, outcomeKey: "builder" },
116
+ { id: "seg-clarity", fieldKey: "priority", equals: "clarity", score: 1, outcomeKey: "guide" },
117
+ { id: "seg-sprint", fieldKey: "style", equals: "sprint", score: 1 },
118
+ ],
119
+ },
120
+ },
121
+ ];
122
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/shared/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const capture: import("@ydtb/tk-scope/core").ToolDescriptor;
2
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/shared/tool.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,8CAIlB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { defineTool } from "@ydtb/tk-scope/core";
2
+ export const capture = defineTool({
3
+ id: "capture",
4
+ name: "Capture",
5
+ package: "@ydtb/tk-scope-capture",
6
+ });
7
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/shared/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;IAChC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAA"}