@happyvertical/smrt-projects 0.57.30 → 0.57.32

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/README.md CHANGED
@@ -202,3 +202,42 @@ await withRepositoryClient(
202
202
 
203
203
  See [`AGENTS.md`](./AGENTS.md) for package architecture, invariants, validation,
204
204
  and contributor guidance.
205
+
206
+ ### Structured project questions
207
+
208
+ `ProjectGovernanceService.createQuestion({ ..., options })` accepts optional
209
+ single-choice suggestions (`ProjectQuestionOption`: stable `id`, `label`, optional
210
+ `description`, optional boolean `recommended`). Recommendations are presentation
211
+ only: creation leaves the question open, with no answer or selection. IDs must be
212
+ unique and nonempty; `other` (case insensitive) is reserved and cannot be authored.
213
+ `question.getOptions()` appends `{ id: 'other', label: 'Other' }` to structured
214
+ questions. Omitting options, or supplying an empty array, keeps the existing
215
+ free-text question flow.
216
+
217
+ `answerQuestion` continues to require a nonempty string `answer`. It additionally
218
+ accepts optional `selectedOptionId` and `idempotencyKey`. An explicit selection
219
+ must match an offered ID, including `other`; an Other answer requires text. Hosts
220
+ should send the chosen label as `answer` for ordinary choices and the person's
221
+ text for Other. The generic `ProjectQuestionsAndDecisions` component supplies
222
+ these values, uses an unselected radio group, marks recommendations, and always
223
+ shows the Other text box. Only explicit form submission invokes `onanswer`.
224
+
225
+ Existing free-text API clients remain compatible, including when answering a
226
+ structured question without a selection: the service stores their answer and
227
+ leaves `selectedOptionId` empty. It never guesses an option from text. Existing
228
+ questions and immutable history are not rewritten or backfilled. New answer
229
+ history has a `getAnswerSelection()` snapshot with answer text, observed revision,
230
+ and explicit option ID/label when supplied; older events return `null`.
231
+
232
+ The optional idempotency key is scoped to a question. After tenant/project and
233
+ current owner/manager authorization, an identical actor, answer, selection,
234
+ expected revision, and note replays without a new revision or history event.
235
+ Reusing the key with different input conflicts. Without a key, the existing
236
+ expected-revision conflict behavior applies. Transaction rollback covers both
237
+ question and history writes. Hosts retain responsibility for affected-task
238
+ reconciliation after persistence and replay.
239
+
240
+ This additive contract adds `question_options` and `selected_option_id` columns
241
+ to `project_questions`, and `answer_selection` to `project_governance_events`.
242
+ Consumers must run their normal manifest-driven database migration before using
243
+ the new released surface. It introduces no new model or table.
package/dist/index.d.ts CHANGED
@@ -75,7 +75,8 @@ export { PullRequest, type PullRequestOptions } from "./models/PullRequest.js";
75
75
  export { Repository, type RepositoryOptions } from "./models/Repository.js";
76
76
  export * from './models/service-evidence.js';
77
77
  export type { ProjectBoardMoveIntent } from './project-board-types.js';
78
- export type { ProjectContextReference, ProjectContextReferenceKind, ProjectDecisionCreateInput, ProjectDecisionOption, ProjectDecisionStatus, ProjectGovernanceAction, ProjectGovernanceActor, ProjectGovernanceActorType, ProjectGovernanceOwner, ProjectGovernanceRecordKind, ProjectGovernanceScope, ProjectGovernanceVisibility, ProjectQuestionCreateInput, ProjectQuestionStatus, } from './project-governance-types.js';
78
+ export type { ProjectContextReference, ProjectContextReferenceKind, ProjectDecisionCreateInput, ProjectDecisionOption, ProjectDecisionStatus, ProjectGovernanceAction, ProjectGovernanceActor, ProjectGovernanceActorType, ProjectGovernanceOwner, ProjectGovernanceRecordKind, ProjectGovernanceScope, ProjectGovernanceVisibility, ProjectQuestionAnswerSelection, ProjectQuestionCreateInput, ProjectQuestionOption, ProjectQuestionStatus, } from './project-governance-types.js';
79
+ export { PROJECT_QUESTION_OTHER_OPTION_ID } from './project-governance-types.js';
79
80
  export { issueIncorporateFeedbackPrompt } from "./prompts.js";
80
81
  export { ProjectTrackerRecipe } from "./recipes.js";
81
82
  export { type RepositoryClientScope, withRepositoryClient, } from "./repository-client-scope.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAKH,OAAO,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAAwB,CAAC;AAC3D,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA2C,CAAC;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAmC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAsB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAgC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAAuC,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAAwC,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAmC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAgC,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA4B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAkB,CAAC;AAExD,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,mCAAmC,EACnC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,gCAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,uCAAoC,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,OAAO,EACL,KAAK,EACL,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,YAAY,GAClB,MAAM,mBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,6BAA0B,CAAC;AAClC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,oCAAiC,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,gCAA6B,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,GACpC,MAAM,qCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,6BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAsB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAqB,CAAC;AACzE,cAAc,8BAA8B,CAAC;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,YAAY,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAW,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAW,CAAC;AACjD,OAAO,EACL,KAAK,qBAAqB,EAC1B,oBAAoB,GACrB,MAAM,8BAA2B,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,0CAA0C,EAC1C,KAAK,kCAAkC,EACvC,oCAAoC,GACrC,MAAM,uDAAuD,CAAC;AAC/D,cAAc,6CAA6C,CAAC;AAE5D,YAAY,EACV,wBAAwB,EAExB,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,iCAAiC,EACjC,sBAAsB,EACtB,4BAA4B,EAC5B,yBAAyB,EAEzB,0BAA0B,EAC1B,yBAAyB,EAEzB,QAAQ,EACR,WAAW,EACX,WAAW,EACX,6BAA6B,EAC7B,oCAAoC,EACpC,WAAW,EACX,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,IAAI,GACL,MAAM,YAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,SAAM,CAAC"}