@happyvertical/smrt-ingestion 0.55.9 → 0.55.11

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
@@ -161,3 +161,24 @@ assignment ownership, and the maintained upload-to-domain-result browser fixture
161
161
  Optional explicit feedback and scoped example retrieval are documented in
162
162
  [FEEDBACK.md](FEEDBACK.md). Approval and execution outcomes remain separate from
163
163
  interpretation correctness; routing policy adoption is explicit and versioned.
164
+
165
+ ## Recipe preview
166
+
167
+ `ingestion.inbox` and `ingestion.review` declare the user-facing inbox and
168
+ review workflows for app discovery. The reference workflow and measured
169
+ evaluation are now published, but the evaluation did not meet supported-reference
170
+ quality gates and did not establish safety. Automation remains disabled. The
171
+ recipes do not configure a source or provider, expose generic CRUD routes, or
172
+ enable automatic execution. Mount `IntakeInbox` and `IntakeReview` with an
173
+ authenticated `IntakeReviewHost`; [REVIEW.md](REVIEW.md) remains the source of
174
+ truth for its scoped callbacks and freshness checks. See the [adoption
175
+ checklist](../../docs/evaluation/3677-adoption.md) and [measured
176
+ report](../../docs/evaluation/3677-measured-evaluation.md) for the release
177
+ limits.
178
+
179
+ The recipe manifest registers those existing browser components as
180
+ `/ingestion/inbox` and `/ingestion/review` routes for a host to mount. The route
181
+ metadata does not supply a host, source, provider, or demo fixture, and it does
182
+ not change the preview-only status. Both recipes declare `both` runtime: their
183
+ components render in a browser, while the authenticated review host and package
184
+ dependency closure require a server.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import './__smrt-register__.js';
2
2
  export * from './dto.js';
3
3
  export * from './models.js';
4
+ export { IngestionInboxRecipe, IngestionReviewRecipe, } from './recipes.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,90 @@
1
1
  import "./dto.js";
2
2
  import { IntakeAction, IntakeAnalysis, IntakeAnalysisAttempt, IntakeDeletion, IntakeDispatch, IntakeEvidence, IntakeExecution, IntakeFeedback, IntakeItem, IntakePlan, IntakeProposal, IntakeReviewDecision } from "./models.js";
3
- export { IntakeAction, IntakeAnalysis, IntakeAnalysisAttempt, IntakeDeletion, IntakeDispatch, IntakeEvidence, IntakeExecution, IntakeFeedback, IntakeItem, IntakePlan, IntakeProposal, IntakeReviewDecision };
3
+ import { SmrtRecipe } from "@happyvertical/smrt-core";
4
+ //#region src/recipes.ts
5
+ var IngestionInboxRecipe = class extends SmrtRecipe {
6
+ static id = "ingestion.inbox";
7
+ static help = "./ingestion-inbox.recipe.md";
8
+ static label = "Ingestion inbox";
9
+ static summary = "Review incoming material and see which items need attention.";
10
+ static synonyms = [
11
+ "intake inbox",
12
+ "incoming documents",
13
+ "review queue"
14
+ ];
15
+ static group = {
16
+ id: "ingestion",
17
+ label: "Ingestion",
18
+ summary: "Review incoming material safely before it can change records."
19
+ };
20
+ static section = {
21
+ id: "ingestion",
22
+ label: "Ingestion",
23
+ icon: "archive",
24
+ description: "Incoming material and its authenticated review workflow."
25
+ };
26
+ static models = [IntakeItem, IntakeEvidence];
27
+ static runtime = "both";
28
+ static surfaces = [{
29
+ kind: "route",
30
+ path: "/ingestion/inbox",
31
+ export: "@happyvertical/smrt-ingestion/svelte#IntakeInbox",
32
+ label: "Ingestion inbox"
33
+ }];
34
+ static nav = [{
35
+ label: "Ingestion inbox",
36
+ model: IntakeItem,
37
+ icon: "archive",
38
+ description: "Incoming material that needs authenticated attention.",
39
+ key: "inbox",
40
+ noun: "inbox item"
41
+ }];
42
+ };
43
+ var IngestionReviewRecipe = class extends SmrtRecipe {
44
+ static id = "ingestion.review";
45
+ static help = "./ingestion-review.recipe.md";
46
+ static label = "Ingestion review";
47
+ static summary = "Inspect evidence and approve, change, reject, or defer proposed actions.";
48
+ static synonyms = [
49
+ "intake review",
50
+ "proposal review",
51
+ "human approval"
52
+ ];
53
+ static group = {
54
+ id: "ingestion",
55
+ label: "Ingestion",
56
+ summary: "Review incoming material safely before it can change records."
57
+ };
58
+ static section = {
59
+ id: "ingestion",
60
+ label: "Ingestion",
61
+ icon: "archive",
62
+ description: "Incoming material and its authenticated review workflow."
63
+ };
64
+ static models = [
65
+ IntakeItem,
66
+ IntakeEvidence,
67
+ IntakeAnalysis,
68
+ IntakeAction,
69
+ IntakeReviewDecision
70
+ ];
71
+ static runtime = "both";
72
+ static surfaces = [{
73
+ kind: "route",
74
+ path: "/ingestion/review",
75
+ export: "@happyvertical/smrt-ingestion/svelte#IntakeReview",
76
+ label: "Ingestion review"
77
+ }];
78
+ static nav = [{
79
+ label: "Ingestion review",
80
+ model: IntakeReviewDecision,
81
+ icon: "fileText",
82
+ description: "Revision-bound decisions on proposed actions.",
83
+ key: "review",
84
+ noun: "review decision"
85
+ }];
86
+ };
87
+ //#endregion
88
+ export { IngestionInboxRecipe, IngestionReviewRecipe, IntakeAction, IntakeAnalysis, IntakeAnalysisAttempt, IntakeDeletion, IntakeDispatch, IntakeEvidence, IntakeExecution, IntakeFeedback, IntakeItem, IntakePlan, IntakeProposal, IntakeReviewDecision };
89
+
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/recipes.ts"],"sourcesContent":["/**\n * Declared ingestion workflows for applications that provide an authenticated\n * intake-review host (#3725).\n *\n * These recipes describe the user-facing inbox and review work. They do not\n * expose the ingestion records as generic CRUD models: all reads and writes\n * continue through the host's scoped service callbacks.\n */\n\nimport { SmrtRecipe } from '@happyvertical/smrt-core';\nimport {\n IntakeAction,\n IntakeAnalysis,\n IntakeEvidence,\n IntakeItem,\n IntakeReviewDecision,\n} from './models.js';\n\n/** Incoming material that needs authenticated human attention. */\nexport class IngestionInboxRecipe extends SmrtRecipe {\n static id = 'ingestion.inbox';\n static help = './ingestion-inbox.recipe.md';\n static label = 'Ingestion inbox';\n static summary =\n 'Review incoming material and see which items need attention.';\n static synonyms = ['intake inbox', 'incoming documents', 'review queue'];\n static group = {\n id: 'ingestion',\n label: 'Ingestion',\n summary: 'Review incoming material safely before it can change records.',\n };\n static section = {\n id: 'ingestion',\n label: 'Ingestion',\n icon: 'archive',\n description: 'Incoming material and its authenticated review workflow.',\n };\n static models = [IntakeItem, IntakeEvidence];\n // The route component renders in a browser, but its authenticated review host\n // and package dependency closure require a server.\n static runtime = 'both' as const;\n static surfaces = [\n {\n kind: 'route',\n path: '/ingestion/inbox',\n export: '@happyvertical/smrt-ingestion/svelte#IntakeInbox',\n label: 'Ingestion inbox',\n },\n ] as const;\n static nav = [\n {\n label: 'Ingestion inbox',\n model: IntakeItem,\n icon: 'archive',\n description: 'Incoming material that needs authenticated attention.',\n key: 'inbox',\n noun: 'inbox item',\n },\n ];\n}\n\n/** Revision-bound human review of proposed actions. */\nexport class IngestionReviewRecipe extends SmrtRecipe {\n static id = 'ingestion.review';\n static help = './ingestion-review.recipe.md';\n static label = 'Ingestion review';\n static summary =\n 'Inspect evidence and approve, change, reject, or defer proposed actions.';\n static synonyms = ['intake review', 'proposal review', 'human approval'];\n static group = {\n id: 'ingestion',\n label: 'Ingestion',\n summary: 'Review incoming material safely before it can change records.',\n };\n static section = {\n id: 'ingestion',\n label: 'Ingestion',\n icon: 'archive',\n description: 'Incoming material and its authenticated review workflow.',\n };\n static models = [\n IntakeItem,\n IntakeEvidence,\n IntakeAnalysis,\n IntakeAction,\n IntakeReviewDecision,\n ];\n // The route component renders in a browser, but its authenticated review host\n // and package dependency closure require a server.\n static runtime = 'both' as const;\n static surfaces = [\n {\n kind: 'route',\n path: '/ingestion/review',\n export: '@happyvertical/smrt-ingestion/svelte#IntakeReview',\n label: 'Ingestion review',\n },\n ] as const;\n static nav = [\n {\n label: 'Ingestion review',\n model: IntakeReviewDecision,\n icon: 'fileText',\n description: 'Revision-bound decisions on proposed actions.',\n key: 'review',\n noun: 'review decision',\n },\n ];\n}\n"],"mappings":";;;;AAmBO,IAAM,uBAAN,cAAmC,WAAW;CACnD,OAAO,KAAK;CACZ,OAAO,OAAO;CACd,OAAO,QAAQ;CACf,OAAO,UACL;CACF,OAAO,WAAW;EAAC;EAAgB;EAAsB;CAAc;CACvE,OAAO,QAAQ;EACb,IAAI;EACJ,OAAO;EACP,SAAS;CACX;CACA,OAAO,UAAU;EACf,IAAI;EACJ,OAAO;EACP,MAAM;EACN,aAAa;CACf;CACA,OAAO,SAAS,CAAC,YAAY,cAAc;CAG3C,OAAO,UAAU;CACjB,OAAO,WAAW,CAChB;EACE,MAAM;EACN,MAAM;EACN,QAAQ;EACR,OAAO;CACT,CACF;CACA,OAAO,MAAM,CACX;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,aAAa;EACb,KAAK;EACL,MAAM;CACR,CACF;AACF;AAGO,IAAM,wBAAN,cAAoC,WAAW;CACpD,OAAO,KAAK;CACZ,OAAO,OAAO;CACd,OAAO,QAAQ;CACf,OAAO,UACL;CACF,OAAO,WAAW;EAAC;EAAiB;EAAmB;CAAgB;CACvE,OAAO,QAAQ;EACb,IAAI;EACJ,OAAO;EACP,SAAS;CACX;CACA,OAAO,UAAU;EACf,IAAI;EACJ,OAAO;EACP,MAAM;EACN,aAAa;CACf;CACA,OAAO,SAAS;EACd;EACA;EACA;EACA;EACA;CACF;CAGA,OAAO,UAAU;CACjB,OAAO,WAAW,CAChB;EACE,MAAM;EACN,MAAM;EACN,QAAQ;EACR,OAAO;CACT,CACF;CACA,OAAO,MAAM,CACX;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,aAAa;EACb,KAAK;EACL,MAAM;CACR,CACF;AACF"}
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-ingestion",
5
- "packageVersion": "0.55.9",
5
+ "packageVersion": "0.55.11",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-ingestion:IntakeItem": {
8
8
  "name": "intakeitem",
@@ -4089,6 +4089,123 @@
4089
4089
  }
4090
4090
  },
4091
4091
  "moduleType": "smrt",
4092
+ "recipes": [
4093
+ {
4094
+ "id": "ingestion.inbox",
4095
+ "className": "IngestionInboxRecipe",
4096
+ "label": "Ingestion inbox",
4097
+ "summary": "Review incoming material and see which items need attention.",
4098
+ "synonyms": [
4099
+ "intake inbox",
4100
+ "incoming documents",
4101
+ "review queue"
4102
+ ],
4103
+ "models": [
4104
+ "@happyvertical/smrt-ingestion:IntakeItem",
4105
+ "@happyvertical/smrt-ingestion:IntakeEvidence"
4106
+ ],
4107
+ "nav": [
4108
+ {
4109
+ "label": "Ingestion inbox",
4110
+ "model": "@happyvertical/smrt-ingestion:IntakeItem",
4111
+ "icon": "archive",
4112
+ "description": "Incoming material that needs authenticated attention.",
4113
+ "key": "inbox",
4114
+ "noun": "inbox item"
4115
+ }
4116
+ ],
4117
+ "requires": [],
4118
+ "group": {
4119
+ "id": "ingestion",
4120
+ "label": "Ingestion",
4121
+ "summary": "Review incoming material safely before it can change records."
4122
+ },
4123
+ "section": {
4124
+ "id": "ingestion",
4125
+ "label": "Ingestion",
4126
+ "icon": "archive",
4127
+ "description": "Incoming material and its authenticated review workflow."
4128
+ },
4129
+ "help": {
4130
+ "markdown": "## Overview\n\nThe ingestion inbox is where an authenticated reviewer finds incoming material\nthat needs attention. It keeps the original material and its related evidence\ntogether, so a reviewer can understand what arrived before choosing a next\nstep.\n\n## Tasks\n\n### Check items that need attention\n\n1. Open the ingestion inbox in an application that has configured an\n authenticated review host.\n2. Choose an item to inspect its evidence and current review state.\n3. Open the item in Ingestion review when it has a proposed action.\n\n### Keep uncertain material for review\n\n1. Leave material in the inbox when there is not enough information to decide.\n2. Return after the application has new information or a reviewer can make a\n decision.\n3. Do not treat an inbox item as permission to change another record.\n\n## Preview status\n\nThis recipe describes a preview workflow. The published evaluation did not meet\nquality gates and did not establish safety, so automation remains disabled. It\ndoes not configure a source, provider, generic record route, or automatic\naction. Applications continue to use the scoped callbacks described in the\ningestion review documentation.\n",
4131
+ "fieldRefs": []
4132
+ },
4133
+ "surfaces": [
4134
+ {
4135
+ "kind": "route",
4136
+ "path": "/ingestion/inbox",
4137
+ "export": "@happyvertical/smrt-ingestion/svelte#IntakeInbox",
4138
+ "label": "Ingestion inbox"
4139
+ }
4140
+ ],
4141
+ "runtime": "both",
4142
+ "demo": {
4143
+ "mode": "server",
4144
+ "reasons": [
4145
+ "Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."
4146
+ ]
4147
+ }
4148
+ },
4149
+ {
4150
+ "id": "ingestion.review",
4151
+ "className": "IngestionReviewRecipe",
4152
+ "label": "Ingestion review",
4153
+ "summary": "Inspect evidence and approve, change, reject, or defer proposed actions.",
4154
+ "synonyms": [
4155
+ "intake review",
4156
+ "proposal review",
4157
+ "human approval"
4158
+ ],
4159
+ "models": [
4160
+ "@happyvertical/smrt-ingestion:IntakeItem",
4161
+ "@happyvertical/smrt-ingestion:IntakeEvidence",
4162
+ "@happyvertical/smrt-ingestion:IntakeAnalysis",
4163
+ "@happyvertical/smrt-ingestion:IntakeAction",
4164
+ "@happyvertical/smrt-ingestion:IntakeReviewDecision"
4165
+ ],
4166
+ "nav": [
4167
+ {
4168
+ "label": "Ingestion review",
4169
+ "model": "@happyvertical/smrt-ingestion:IntakeReviewDecision",
4170
+ "icon": "fileText",
4171
+ "description": "Revision-bound decisions on proposed actions.",
4172
+ "key": "review",
4173
+ "noun": "review decision"
4174
+ }
4175
+ ],
4176
+ "requires": [],
4177
+ "group": {
4178
+ "id": "ingestion",
4179
+ "label": "Ingestion",
4180
+ "summary": "Review incoming material safely before it can change records."
4181
+ },
4182
+ "section": {
4183
+ "id": "ingestion",
4184
+ "label": "Ingestion",
4185
+ "icon": "archive",
4186
+ "description": "Incoming material and its authenticated review workflow."
4187
+ },
4188
+ "help": {
4189
+ "markdown": "## Overview\n\nIngestion review lets an authorized person inspect the evidence behind a\nproposed action before it can affect another record. A decision is tied to the\nspecific material and proposal that the reviewer saw.\n\n## Tasks\n\n### Review a proposed action\n\n1. Open an inbox item that has a proposed action.\n2. Read the evidence and the proposed result in the authenticated review host.\n3. Approve, change, reject, or defer the proposal according to the current\n application policy.\n\n### Return to an item after it changes\n\n1. Refresh the review when the host indicates that the material or proposal has\n changed.\n2. Review the current proposal before making a decision.\n3. Leave a proposal deferred when its evidence or destination is still\n uncertain.\n\n## Preview status\n\nThis recipe describes a preview workflow. The published evaluation did not meet\nquality gates and did not establish safety, so automation remains disabled. It\ndoes not create a generic editing surface or enable automatic execution. A host\nrechecks the reviewer, scope, and current proposal before it accepts a decision.\n",
4190
+ "fieldRefs": []
4191
+ },
4192
+ "surfaces": [
4193
+ {
4194
+ "kind": "route",
4195
+ "path": "/ingestion/review",
4196
+ "export": "@happyvertical/smrt-ingestion/svelte#IntakeReview",
4197
+ "label": "Ingestion review"
4198
+ }
4199
+ ],
4200
+ "runtime": "both",
4201
+ "demo": {
4202
+ "mode": "server",
4203
+ "reasons": [
4204
+ "Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."
4205
+ ]
4206
+ }
4207
+ }
4208
+ ],
4092
4209
  "smrtDependencies": [
4093
4210
  "@happyvertical/smrt-agents",
4094
4211
  "@happyvertical/smrt-assets",