@oxygen-agent/cli 1.1014.1343 → 1.1014.1420

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 (70) hide show
  1. package/README.md +1 -1
  2. package/dist/command-families/tables/register-reads.js +1 -1
  3. package/dist/command-support.js +4 -2
  4. package/dist/commands/blueprints.js +10 -6
  5. package/dist/commands/crm.js +5 -2
  6. package/dist/commands/dashboards.js +4 -2
  7. package/dist/commands/db.js +1 -1
  8. package/dist/commands/directory.js +7 -4
  9. package/dist/commands/inbox.js +5 -2
  10. package/dist/commands/prompts.js +4 -2
  11. package/dist/commands/publishing.js +5 -2
  12. package/dist/commands/sequences.js +13 -4
  13. package/dist/commands/support.js +30 -19
  14. package/dist/customer-operation-commands.js +0 -42
  15. package/dist/http-client.js +4 -1
  16. package/dist/workspace-placement-commands.js +1 -1
  17. package/node_modules/@oxygen/shared/dist/capability-args.d.ts +19 -0
  18. package/node_modules/@oxygen/shared/dist/capability-args.js +73 -0
  19. package/node_modules/@oxygen/shared/dist/contracts/browser-operations.js +2 -1
  20. package/node_modules/@oxygen/shared/dist/contracts/operations.js +3 -6
  21. package/node_modules/@oxygen/shared/dist/contracts/table-query-raw.d.ts +5 -1
  22. package/node_modules/@oxygen/shared/dist/contracts/table-query-raw.js +25 -2
  23. package/node_modules/@oxygen/shared/dist/contracts/teammates.js +1 -1
  24. package/node_modules/@oxygen/shared/dist/enrollment-origin.d.ts +3 -1
  25. package/node_modules/@oxygen/shared/dist/enrollment-origin.js +2 -0
  26. package/node_modules/@oxygen/shared/dist/guided-activation.d.ts +2 -0
  27. package/node_modules/@oxygen/shared/dist/guided-onboarding-company-context.d.ts +9 -2
  28. package/node_modules/@oxygen/shared/dist/guided-trial-billing.d.ts +10 -2
  29. package/node_modules/@oxygen/shared/dist/guided-trial-billing.js +2 -5
  30. package/node_modules/@oxygen/shared/dist/knowledge-bootstrap.d.ts +6 -0
  31. package/node_modules/@oxygen/shared/dist/knowledge-bootstrap.js +1 -0
  32. package/node_modules/@oxygen/shared/dist/onboarding-plays.d.ts +68 -0
  33. package/node_modules/@oxygen/shared/dist/onboarding-plays.js +114 -0
  34. package/node_modules/@oxygen/shared/dist/onboarding-research.d.ts +37 -0
  35. package/node_modules/@oxygen/shared/dist/onboarding-research.js +57 -0
  36. package/node_modules/@oxygen/shared/dist/placement-copy.d.ts +8 -0
  37. package/node_modules/@oxygen/shared/dist/placement-copy.js +16 -0
  38. package/node_modules/@oxygen/shared/dist/product-analytics-events.d.ts +8 -0
  39. package/node_modules/@oxygen/shared/dist/product-analytics-events.js +8 -0
  40. package/node_modules/@oxygen/shared/dist/sequences.d.ts +30 -2
  41. package/node_modules/@oxygen/shared/dist/sequences.js +67 -7
  42. package/node_modules/@oxygen/shared/dist/teammates.d.ts +3 -1
  43. package/node_modules/@oxygen/shared/dist/teammates.js +4 -2
  44. package/node_modules/@oxygen/shared/dist/user-capability-routing.js +19 -40
  45. package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -1
  46. package/node_modules/@oxygen/shared/dist/version.generated.js +1 -1
  47. package/node_modules/@oxygen/shared/dist/workspace-placement.js +4 -0
  48. package/package.json +1 -1
  49. package/node_modules/@oxygen/shared/dist/contracts/guided-company-files.d.ts +0 -30
  50. package/node_modules/@oxygen/shared/dist/contracts/guided-company-files.js +0 -53
  51. package/node_modules/@oxygen/shared/dist/contracts/guided-first-sourcing.d.ts +0 -120
  52. package/node_modules/@oxygen/shared/dist/contracts/guided-first-sourcing.js +0 -48
  53. package/node_modules/@oxygen/shared/dist/contracts/guided-onboarding-journey.d.ts +0 -267
  54. package/node_modules/@oxygen/shared/dist/contracts/guided-onboarding-journey.js +0 -63
  55. package/node_modules/@oxygen/shared/dist/guided-company-files.d.ts +0 -13
  56. package/node_modules/@oxygen/shared/dist/guided-company-files.js +0 -14
  57. package/node_modules/@oxygen/shared/dist/guided-first-sourcing.d.ts +0 -116
  58. package/node_modules/@oxygen/shared/dist/guided-first-sourcing.js +0 -11
  59. package/node_modules/@oxygen/shared/dist/guided-onboarding-answers.d.ts +0 -4
  60. package/node_modules/@oxygen/shared/dist/guided-onboarding-answers.js +0 -42
  61. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.d.ts +0 -147
  62. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.fixture.d.ts +0 -12
  63. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.fixture.js +0 -83
  64. package/node_modules/@oxygen/shared/dist/guided-onboarding-journey.js +0 -44
  65. package/node_modules/@oxygen/shared/dist/guided-onboarding-prospects.d.ts +0 -7
  66. package/node_modules/@oxygen/shared/dist/guided-onboarding-prospects.js +0 -13
  67. package/node_modules/@oxygen/shared/dist/guided-onboarding-recommendations.d.ts +0 -54
  68. package/node_modules/@oxygen/shared/dist/guided-onboarding-recommendations.js +0 -100
  69. package/node_modules/@oxygen/shared/dist/guided-onboarding-signals.d.ts +0 -4
  70. package/node_modules/@oxygen/shared/dist/guided-onboarding-signals.js +0 -34
@@ -1,267 +0,0 @@
1
- /** Hiring roles remain strings. Technology identity includes its relationship. */
2
- export declare const GUIDED_ONBOARDING_SIGNALS_CONTRACT: import("./schema.js").ContractObject<{
3
- readonly hiring: import("./schema.js").ContractObject<{
4
- readonly mode: {
5
- type: "string";
6
- enum: readonly ("none" | "selected")[];
7
- description?: string;
8
- };
9
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
10
- }, "mode" | "values">;
11
- readonly technology: import("./schema.js").ContractObject<{
12
- readonly mode: {
13
- type: "string";
14
- enum: readonly ("none" | "selected")[];
15
- description?: string;
16
- };
17
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").ContractObject<{
18
- readonly name: import("./schema.js").StringProperty;
19
- readonly relationship: {
20
- type: "string";
21
- enum: readonly ("integrates_with" | "replaces" | "uses")[];
22
- description?: string;
23
- };
24
- }, "name" | "relationship">>;
25
- }, "mode" | "values">;
26
- }, "hiring" | "technology">;
27
- export declare const GUIDED_ONBOARDING_ANSWERS_CONTRACT: import("./schema.js").ContractObject<{
28
- readonly company_context: import("./schema.js").ContractObject<{
29
- readonly website: {
30
- oneOf: [import("./schema.js").StringProperty, import("./schema.js").NullProperty];
31
- description?: string;
32
- };
33
- readonly name: import("./schema.js").StringProperty;
34
- readonly description: import("./schema.js").StringProperty;
35
- readonly context_links: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
36
- readonly file_ids: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
37
- }, "context_links" | "description" | "file_ids" | "name" | "website">;
38
- readonly company_review: import("./schema.js").ContractObject<{
39
- readonly statement: import("./schema.js").StringProperty;
40
- readonly profile_revision: import("./schema.js").StringProperty;
41
- }, "profile_revision" | "statement">;
42
- readonly audience_company_size: import("./schema.js").ContractObject<{
43
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
44
- }, "values">;
45
- readonly audience_markets: import("./schema.js").ContractObject<{
46
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
47
- }, "values">;
48
- readonly audience_industries: import("./schema.js").ContractObject<{
49
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
50
- }, "values">;
51
- readonly audience_personas: import("./schema.js").ContractObject<{
52
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
53
- }, "values">;
54
- readonly signals: import("./schema.js").ContractObject<{
55
- readonly hiring: import("./schema.js").ContractObject<{
56
- readonly mode: {
57
- type: "string";
58
- enum: readonly ("none" | "selected")[];
59
- description?: string;
60
- };
61
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
62
- }, "mode" | "values">;
63
- readonly technology: import("./schema.js").ContractObject<{
64
- readonly mode: {
65
- type: "string";
66
- enum: readonly ("none" | "selected")[];
67
- description?: string;
68
- };
69
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").ContractObject<{
70
- readonly name: import("./schema.js").StringProperty;
71
- readonly relationship: {
72
- type: "string";
73
- enum: readonly ("integrates_with" | "replaces" | "uses")[];
74
- description?: string;
75
- };
76
- }, "name" | "relationship">>;
77
- }, "mode" | "values">;
78
- }, "hiring" | "technology">;
79
- readonly prospects: import("./schema.js").ContractObject<{
80
- readonly decision: {
81
- type: "string";
82
- enum: readonly ("continue" | "refine")[];
83
- description?: string;
84
- };
85
- readonly feedback: import("./schema.js").StringProperty;
86
- }, "decision" | "feedback">;
87
- readonly linkedin: import("./schema.js").ContractObject<{
88
- readonly choice: {
89
- type: "string";
90
- enum: readonly ("connect" | "skip")[];
91
- description?: string;
92
- };
93
- }, "choice">;
94
- readonly sequence: import("./schema.js").ContractObject<{
95
- readonly decision: {
96
- type: "string";
97
- enum: readonly ("keep_draft" | "review")[];
98
- description?: string;
99
- };
100
- }, "decision">;
101
- readonly tour: import("./schema.js").ContractObject<{
102
- readonly visited: import("./schema.js").ArrayProperty<{
103
- type: "string";
104
- enum: readonly ("leads" | "overview" | "sequence" | "sourcing")[];
105
- description?: string;
106
- }>;
107
- }, "visited">;
108
- }, never>;
109
- export declare const GUIDED_ONBOARDING_MUTATION_CONTRACT: import("./schema.js").ContractObject<{
110
- revision: {
111
- type: "integer";
112
- description?: string;
113
- minimum?: number;
114
- maximum?: number;
115
- "x-clamp"?: true;
116
- };
117
- mutation_id: import("./schema.js").StringProperty;
118
- }, "mutation_id" | "revision">;
119
- export declare const GUIDED_ONBOARDING_ADVANCE_CONTRACT: import("./schema.js").ContractObject<{
120
- readonly revision: {
121
- type: "integer";
122
- description?: string;
123
- minimum?: number;
124
- maximum?: number;
125
- "x-clamp"?: true;
126
- };
127
- readonly mutation_id: import("./schema.js").StringProperty;
128
- readonly step: {
129
- type: "string";
130
- enum: readonly ("audience_company_size" | "audience_industries" | "audience_markets" | "audience_personas" | "campaign" | "company_context" | "company_research" | "company_review" | "complete" | "daily_rhythm" | "linkedin" | "prospects" | "routines" | "sequence" | "signals" | "tour" | "trial" | "welcome")[];
131
- description?: string;
132
- };
133
- }, "mutation_id" | "revision" | "step">;
134
- export declare const GUIDED_ONBOARDING_SAVE_CONTRACT: import("./schema.js").ContractObject<{
135
- readonly revision: {
136
- type: "integer";
137
- description?: string;
138
- minimum?: number;
139
- maximum?: number;
140
- "x-clamp"?: true;
141
- };
142
- readonly mutation_id: import("./schema.js").StringProperty;
143
- readonly step: {
144
- type: "string";
145
- enum: readonly ("audience_company_size" | "audience_industries" | "audience_markets" | "audience_personas" | "campaign" | "company_context" | "company_research" | "company_review" | "complete" | "daily_rhythm" | "linkedin" | "prospects" | "routines" | "sequence" | "signals" | "tour" | "trial" | "welcome")[];
146
- description?: string;
147
- };
148
- readonly answers: import("./schema.js").ContractObject<{
149
- readonly company_context: import("./schema.js").ContractObject<{
150
- readonly website: {
151
- oneOf: [import("./schema.js").StringProperty, import("./schema.js").NullProperty];
152
- description?: string;
153
- };
154
- readonly name: import("./schema.js").StringProperty;
155
- readonly description: import("./schema.js").StringProperty;
156
- readonly context_links: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
157
- readonly file_ids: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
158
- }, "context_links" | "description" | "file_ids" | "name" | "website">;
159
- readonly company_review: import("./schema.js").ContractObject<{
160
- readonly statement: import("./schema.js").StringProperty;
161
- readonly profile_revision: import("./schema.js").StringProperty;
162
- }, "profile_revision" | "statement">;
163
- readonly audience_company_size: import("./schema.js").ContractObject<{
164
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
165
- }, "values">;
166
- readonly audience_markets: import("./schema.js").ContractObject<{
167
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
168
- }, "values">;
169
- readonly audience_industries: import("./schema.js").ContractObject<{
170
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
171
- }, "values">;
172
- readonly audience_personas: import("./schema.js").ContractObject<{
173
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
174
- }, "values">;
175
- readonly signals: import("./schema.js").ContractObject<{
176
- readonly hiring: import("./schema.js").ContractObject<{
177
- readonly mode: {
178
- type: "string";
179
- enum: readonly ("none" | "selected")[];
180
- description?: string;
181
- };
182
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").StringProperty>;
183
- }, "mode" | "values">;
184
- readonly technology: import("./schema.js").ContractObject<{
185
- readonly mode: {
186
- type: "string";
187
- enum: readonly ("none" | "selected")[];
188
- description?: string;
189
- };
190
- readonly values: import("./schema.js").ArrayProperty<import("./schema.js").ContractObject<{
191
- readonly name: import("./schema.js").StringProperty;
192
- readonly relationship: {
193
- type: "string";
194
- enum: readonly ("integrates_with" | "replaces" | "uses")[];
195
- description?: string;
196
- };
197
- }, "name" | "relationship">>;
198
- }, "mode" | "values">;
199
- }, "hiring" | "technology">;
200
- readonly prospects: import("./schema.js").ContractObject<{
201
- readonly decision: {
202
- type: "string";
203
- enum: readonly ("continue" | "refine")[];
204
- description?: string;
205
- };
206
- readonly feedback: import("./schema.js").StringProperty;
207
- }, "decision" | "feedback">;
208
- readonly linkedin: import("./schema.js").ContractObject<{
209
- readonly choice: {
210
- type: "string";
211
- enum: readonly ("connect" | "skip")[];
212
- description?: string;
213
- };
214
- }, "choice">;
215
- readonly sequence: import("./schema.js").ContractObject<{
216
- readonly decision: {
217
- type: "string";
218
- enum: readonly ("keep_draft" | "review")[];
219
- description?: string;
220
- };
221
- }, "decision">;
222
- readonly tour: import("./schema.js").ContractObject<{
223
- readonly visited: import("./schema.js").ArrayProperty<{
224
- type: "string";
225
- enum: readonly ("leads" | "overview" | "sequence" | "sourcing")[];
226
- description?: string;
227
- }>;
228
- }, "visited">;
229
- }, never>;
230
- readonly advance: import("./schema.js").BooleanProperty;
231
- }, "answers" | "mutation_id" | "revision" | "step">;
232
- export declare const GUIDED_ONBOARDING_NAVIGATION_CONTRACT: import("./schema.js").ContractObject<{
233
- readonly revision: {
234
- type: "integer";
235
- description?: string;
236
- minimum?: number;
237
- maximum?: number;
238
- "x-clamp"?: true;
239
- };
240
- readonly mutation_id: import("./schema.js").StringProperty;
241
- readonly step: {
242
- type: "string";
243
- enum: readonly ("audience_company_size" | "audience_industries" | "audience_markets" | "audience_personas" | "campaign" | "company_context" | "company_research" | "company_review" | "complete" | "daily_rhythm" | "linkedin" | "prospects" | "routines" | "sequence" | "signals" | "tour" | "trial" | "welcome")[];
244
- description?: string;
245
- };
246
- readonly paused: import("./schema.js").BooleanProperty;
247
- readonly tour_active_stop: {
248
- type: "string";
249
- enum: readonly ("leads" | "overview" | "sequence" | "sourcing")[];
250
- description?: string;
251
- };
252
- }, "mutation_id" | "paused" | "revision" | "step">;
253
- export declare const GUIDED_ONBOARDING_CHECKOUT_CONTRACT: import("./schema.js").ContractObject<{
254
- readonly revision: {
255
- type: "integer";
256
- description?: string;
257
- minimum?: number;
258
- maximum?: number;
259
- "x-clamp"?: true;
260
- };
261
- readonly mutation_id: import("./schema.js").StringProperty;
262
- readonly approved: import("./schema.js").BooleanProperty;
263
- }, "approved" | "mutation_id" | "revision">;
264
- export declare const GUIDED_ONBOARDING_JOURNEY_ACTIONS: readonly ["get", "save", "advance", "back", "restart", "billing", "checkout", "navigation", "prospects_preview"];
265
- export type GuidedOnboardingJourneyAction = typeof GUIDED_ONBOARDING_JOURNEY_ACTIONS[number];
266
- import type { OperationSpec } from "./operations.js";
267
- export declare const GUIDED_ONBOARDING_JOURNEY_OPERATIONS: readonly OperationSpec[];
@@ -1,63 +0,0 @@
1
- import { arr, bool, enumOf, int, obj, str } from "./schema.js";
2
- import { GUIDED_ONBOARDING_COMPANY_CONTEXT_CONTRACT } from "../guided-onboarding-company-context.js";
3
- import { GUIDED_ONBOARDING_STEPS, GUIDED_ONBOARDING_TECHNOLOGY_RELATIONSHIPS } from "../guided-onboarding-journey.js";
4
- const mode = () => enumOf(["none", "selected"]);
5
- const name = () => str({ minLength: 1, maxLength: 160 });
6
- /** Hiring roles remain strings. Technology identity includes its relationship. */
7
- export const GUIDED_ONBOARDING_SIGNALS_CONTRACT = obj({
8
- hiring: obj({ mode: mode(), values: arr(name(), { maxItems: 40 }) }, { required: ["mode", "values"] }),
9
- technology: obj({
10
- mode: mode(),
11
- values: arr(obj({ name: name(), relationship: enumOf(GUIDED_ONBOARDING_TECHNOLOGY_RELATIONSHIPS) }, { required: ["name", "relationship"] }), { maxItems: 40 }),
12
- }, { required: ["mode", "values"] }),
13
- }, { required: ["hiring", "technology"] });
14
- const choice = () => obj({ values: arr(name(), { minItems: 1, maxItems: 40 }) }, { required: ["values"] });
15
- export const GUIDED_ONBOARDING_ANSWERS_CONTRACT = obj({
16
- company_context: GUIDED_ONBOARDING_COMPANY_CONTEXT_CONTRACT,
17
- company_review: obj({ statement: str({ minLength: 1, maxLength: 12000 }), profile_revision: str({ minLength: 1, maxLength: 160 }) }, { required: ["statement", "profile_revision"] }),
18
- audience_company_size: choice(), audience_markets: choice(), audience_industries: choice(), audience_personas: choice(),
19
- signals: GUIDED_ONBOARDING_SIGNALS_CONTRACT,
20
- prospects: obj({ decision: enumOf(["continue", "refine"]), feedback: str({ maxLength: 4000 }) }, { required: ["decision", "feedback"] }),
21
- linkedin: obj({ choice: enumOf(["connect", "skip"]) }, { required: ["choice"] }),
22
- sequence: obj({ decision: enumOf(["review", "keep_draft"]) }, { required: ["decision"] }),
23
- tour: obj({ visited: arr(enumOf(["overview", "leads", "sourcing", "sequence"]), { maxItems: 4 }) }, { required: ["visited"] }),
24
- });
25
- const mutation = { revision: int({ minimum: 1 }), mutation_id: str({ minLength: 1, maxLength: 160, pattern: "^[a-zA-Z0-9_.:-]+$" }) };
26
- export const GUIDED_ONBOARDING_MUTATION_CONTRACT = obj(mutation, { required: ["revision", "mutation_id"] });
27
- export const GUIDED_ONBOARDING_ADVANCE_CONTRACT = obj({ ...mutation, step: enumOf(GUIDED_ONBOARDING_STEPS) }, { required: ["revision", "mutation_id", "step"] });
28
- export const GUIDED_ONBOARDING_SAVE_CONTRACT = obj({ ...mutation, step: enumOf(GUIDED_ONBOARDING_STEPS),
29
- answers: GUIDED_ONBOARDING_ANSWERS_CONTRACT, advance: bool({ description: "Save and advance in one native transaction after checking this step. No provider action or implicit activation." }) }, { required: ["revision", "mutation_id", "step", "answers"] });
30
- export const GUIDED_ONBOARDING_NAVIGATION_CONTRACT = obj({ ...mutation, step: enumOf(GUIDED_ONBOARDING_STEPS), paused: bool(),
31
- tour_active_stop: enumOf(["overview", "leads", "sourcing", "sequence"]) }, { required: ["revision", "mutation_id", "step", "paused"] });
32
- export const GUIDED_ONBOARDING_CHECKOUT_CONTRACT = obj({ ...mutation, approved: bool() }, { required: ["revision", "mutation_id", "approved"] });
33
- export const GUIDED_ONBOARDING_JOURNEY_ACTIONS = ["get", "save", "advance", "back", "restart", "billing", "checkout", "navigation", "prospects_preview"];
34
- const base = "/api/cli/onboarding/activation/{activationId}/journey";
35
- export const GUIDED_ONBOARDING_JOURNEY_OPERATIONS = [
36
- { id: "onboarding.journey.get", route: base, method: "GET", contract: obj({}), parameters: ["activationId"],
37
- cli: { path: ["onboarding", "journey", "get"], summary: "Read your private resumable onboarding answers and native progress." },
38
- mcp: { name: "oxygen_onboarding_journey_get", title: "Oxygen: Read onboarding journey", description: "Read your activationId journey and saved answers. Creator-private; enabled genuine DEV only. No research, model call or message send.", pack: "agents" }, mutates: false, spends: false },
39
- { id: "onboarding.journey.save", route: base, method: "POST", parameters: ["activationId"], contract: GUIDED_ONBOARDING_SAVE_CONTRACT,
40
- cli: { path: ["onboarding", "journey", "save"], summary: "Save reviewed answers and optionally advance atomically. Free; no model, send or routine execution." },
41
- mcp: { name: "oxygen_onboarding_journey_save", title: "Oxygen: Onboarding save", description: "Creator-private DEV onboarding save for activationId. Requires current revision and stable mutation_id. Save accepts only current step answers; company context prepares native sources and records existing bounded research consent. Advance checks native readiness and billing. No paid turn, synchronous research, outreach or routine activation.", pack: "agents", annotations: { destructiveHint: false, openWorldHint: false, idempotentHint: true } }, mutates: true, spends: false },
42
- { id: "onboarding.journey.advance", route: `${base}/advance`, method: "POST", parameters: ["activationId"], contract: GUIDED_ONBOARDING_ADVANCE_CONTRACT,
43
- cli: { path: ["onboarding", "journey", "advance"], summary: "Advance after native readiness checks. Free; no model, send or routine execution." },
44
- mcp: { name: "oxygen_onboarding_journey_advance", title: "Oxygen: Onboarding advance", description: "Creator-private DEV onboarding advance for activationId. Requires current revision and stable mutation_id. Save accepts only current step answers; advance checks native readiness and billing. Restart preserves resources and consumed funding. No paid turn, research, outreach or routine activation.", pack: "agents", annotations: { destructiveHint: false, openWorldHint: false, idempotentHint: true } }, mutates: true, spends: false },
45
- { id: "onboarding.journey.back", route: `${base}/back`, method: "POST", parameters: ["activationId"], contract: GUIDED_ONBOARDING_MUTATION_CONTRACT,
46
- cli: { path: ["onboarding", "journey", "back"], summary: "Return to the previous step with saved answers. Free; no model, send or routine execution." },
47
- mcp: { name: "oxygen_onboarding_journey_back", title: "Oxygen: Onboarding back", description: "Creator-private DEV onboarding back for activationId. Requires current revision and stable mutation_id. Save accepts only current step answers; advance checks native readiness and billing. Restart preserves resources and consumed funding. No paid turn, research, outreach or routine activation.", pack: "agents", annotations: { destructiveHint: false, openWorldHint: false, idempotentHint: true } }, mutates: true, spends: false },
48
- { id: "onboarding.journey.restart", route: `${base}/restart`, method: "POST", parameters: ["activationId"], contract: GUIDED_ONBOARDING_MUTATION_CONTRACT,
49
- cli: { path: ["onboarding", "journey", "restart"], summary: "Restart progress, preserving Knowledge, chats, campaigns and billing. Free; no model, send or routine execution." },
50
- mcp: { name: "oxygen_onboarding_journey_restart", title: "Oxygen: Onboarding restart", description: "Creator-private DEV onboarding restart for activationId. Requires current revision and stable mutation_id. Save accepts only current step answers; advance checks native readiness and billing. Restart preserves resources and consumed funding. No paid turn, research, outreach or routine activation.", pack: "agents", annotations: { destructiveHint: false, openWorldHint: false, idempotentHint: true } }, mutates: true, spends: false },
51
- { id: "onboarding.journey.prospects_preview", route: `${base}/prospects/preview`, method: "POST", parameters: ["activationId"], contract: GUIDED_ONBOARDING_MUTATION_CONTRACT,
52
- cli: { path: ["onboarding", "journey", "prospects-preview"], summary: "Preview up to five real people for saved targeting through the native free source; persist inspectable native results." },
53
- mcp: { name: "oxygen_onboarding_journey_prospects_preview", title: "Oxygen: Preview onboarding prospects", description: "At the prospects step, use current revision and stable mutation_id to preview up to five people from saved targeting. Native free source read and manual preview Table writes; cached retries, no paid fallback, inference, enrollment or outreach. Unsupported criteria remain explicit diagnostics, never verified fit.", pack: "agents", annotations: { openWorldHint: true, destructiveHint: false, idempotentHint: true } }, mutates: true, spends: false },
54
- { id: "onboarding.journey.navigation", route: `${base}/navigation`, method: "POST", parameters: ["activationId"], contract: GUIDED_ONBOARDING_NAVIGATION_CONTRACT,
55
- cli: { path: ["onboarding", "journey", "navigation"], summary: "Save pause/resume and exact tour position, retaining the current journey step and visited history." },
56
- mcp: { name: "oxygen_onboarding_journey_navigation", title: "Oxygen: Save onboarding position", description: "Persist paused and optional tour_active_stop at current step/revision with stable mutation_id. Position is separate from visited history. No step advance, research, send or routine activation.", pack: "agents" }, mutates: true, spends: false },
57
- { id: "onboarding.journey.billing", route: `${base}/billing`, method: "GET", contract: obj({}), parameters: ["activationId"],
58
- cli: { path: ["onboarding", "journey", "billing"], summary: "Read native trial eligibility; may reconcile an already-earned trial credit grant." },
59
- mcp: { name: "oxygen_onboarding_journey_billing", title: "Oxygen: Onboarding billing", description: "Read native TEST trial/paid eligibility for your activationId. May reconcile an already-earned native credit grant, so this is a mutating call. No new subscription or charge; errors remain errors.", pack: "agents", annotations: { openWorldHint: true } }, mutates: true, spends: false },
60
- { id: "onboarding.journey.checkout", route: `${base}/checkout`, method: "POST", contract: GUIDED_ONBOARDING_CHECKOUT_CONTRACT, parameters: ["activationId"],
61
- cli: { path: ["onboarding", "journey", "checkout"], summary: "Open approved DEV TEST Checkout as current workspace admin/owner, or reuse existing eligible billing." },
62
- mcp: { name: "oxygen_onboarding_journey_checkout", title: "Oxygen: Onboarding test Checkout", description: "Current DEV admin/owner only: approved=true, revision and stable mutation_id open card-required TEST Checkout, $0 for seven days then $49/month, once-only 2000 trial credits. Reuses eligible existing paid/trial. No live Stripe fallback or early charge.", pack: "agents", annotations: { openWorldHint: true } }, mutates: true, spends: false },
63
- ];
@@ -1,13 +0,0 @@
1
- /** Browser-safe budgets for the native guided company-file owner and all transports. */
2
- export declare const GUIDED_COMPANY_FILE_LIMITS: {
3
- readonly textBytes: 1500000;
4
- readonly pdfBytes: 5242880;
5
- readonly retainedWorkspaceBytes: 1073741824;
6
- readonly bodyTimeoutMs: 15000;
7
- readonly storageTimeoutMs: 15000;
8
- readonly bodyLimitBytes: 5308416;
9
- readonly nameBytes: 255;
10
- };
11
- export declare const GUIDED_COMPANY_FILE_CONTENT_TYPES: readonly ["text/plain", "text/markdown", "application/pdf"];
12
- export type GuidedCompanyFileContentType = typeof GUIDED_COMPANY_FILE_CONTENT_TYPES[number];
13
- export declare function guidedCompanyFileByteLimit(contentType: GuidedCompanyFileContentType): number;
@@ -1,14 +0,0 @@
1
- /** Browser-safe budgets for the native guided company-file owner and all transports. */
2
- export const GUIDED_COMPANY_FILE_LIMITS = {
3
- textBytes: 1_500_000,
4
- pdfBytes: 5_242_880,
5
- retainedWorkspaceBytes: 1_073_741_824,
6
- bodyTimeoutMs: 15_000,
7
- storageTimeoutMs: 15_000,
8
- bodyLimitBytes: 5_308_416,
9
- nameBytes: 255,
10
- };
11
- export const GUIDED_COMPANY_FILE_CONTENT_TYPES = ["text/plain", "text/markdown", "application/pdf"];
12
- export function guidedCompanyFileByteLimit(contentType) {
13
- return contentType === "application/pdf" ? GUIDED_COMPANY_FILE_LIMITS.pdfBytes : GUIDED_COMPANY_FILE_LIMITS.textBytes;
14
- }
@@ -1,116 +0,0 @@
1
- import type { GuidedOnboardingAnswers, GuidedOnboardingProspectLimitation } from "./guided-onboarding-journey.js";
2
- export type GuidedFirstSourcingOwner = {
3
- organizationId: string;
4
- actorId: string;
5
- activationId: string;
6
- };
7
- export type GuidedFirstSourcingBounds = {
8
- targetCount: number;
9
- maxPages: number;
10
- maxCredits: number;
11
- };
12
- export type GuidedFirstSourcingCriteria = {
13
- sourceKey: string;
14
- digest: string;
15
- company: NonNullable<GuidedOnboardingAnswers["company_review"]>;
16
- targeting: {
17
- filters: Record<string, unknown>;
18
- signals: GuidedOnboardingAnswers["signals"];
19
- limitations: GuidedOnboardingProspectLimitation[];
20
- };
21
- };
22
- export type GuidedFirstSourcingQuote = {
23
- toolId: "blitzapi.people_search";
24
- perPageCredits: number;
25
- revision: string;
26
- canRun: boolean;
27
- };
28
- export type GuidedFirstSourcingPreview = {
29
- id: string;
30
- activationId: string;
31
- actorId: string;
32
- activationRevision: number;
33
- tableId: string;
34
- criteria: GuidedFirstSourcingCriteria;
35
- bounds: GuidedFirstSourcingBounds;
36
- quote: GuidedFirstSourcingQuote & {
37
- pages: number;
38
- estimatedCredits: number;
39
- };
40
- expiresAt: string;
41
- digest: string;
42
- };
43
- /** Current authority witness, distinct from the provider query's stable identity.
44
- * Confirmation revisions, journey generation, navigation and preview/cap expiry
45
- * cannot turn the same approved native source into another first pull. */
46
- export declare function guidedFirstSourcingAudienceWitness(answers: GuidedOnboardingAnswers): {
47
- company: string | null;
48
- company_size: import("./guided-onboarding-journey.js").GuidedOnboardingChoice | null;
49
- markets: import("./guided-onboarding-journey.js").GuidedOnboardingChoice | null;
50
- industries: import("./guided-onboarding-journey.js").GuidedOnboardingChoice | null;
51
- personas: import("./guided-onboarding-journey.js").GuidedOnboardingChoice | null;
52
- signals: {
53
- hiring: import("./guided-onboarding-journey.js").GuidedOnboardingSignal;
54
- technology: import("./guided-onboarding-journey.js").GuidedOnboardingTechnologySignal;
55
- } | null;
56
- };
57
- /** Optional GET scope for a current native NIGHTLY quote. The timezone is a
58
- * customer/browser IANA suggestion; it never confirms or saves a schedule. */
59
- export type GuidedFirstSourcingDefaultsRequest = {
60
- revision: number;
61
- generation: number;
62
- timezoneHint: string;
63
- };
64
- /** Structural projection of E's actual readonly producer; no native import in shared. */
65
- export type GuidedFirstSourcingRoutineDefaults = {
66
- initial: {
67
- sourceIds: string[];
68
- limits: {
69
- max_examined: number;
70
- max_new_leads: number;
71
- max_provider_pages: number;
72
- max_provider_credits: number;
73
- };
74
- scanBudget: {
75
- per_run_credits: number;
76
- daily_credits: number;
77
- };
78
- briefingBudget: {
79
- per_run_credits: number;
80
- daily_credits: number;
81
- };
82
- };
83
- sourceNames: Record<string, string>;
84
- quote: {
85
- provider_credits_per_run: number;
86
- inference_credits_per_run: 0;
87
- source_quotes: Array<{
88
- source_id: string;
89
- provider_credits_per_page: number;
90
- incremental_mode: "cursor" | "watermark";
91
- }>;
92
- };
93
- };
94
- export type GuidedFirstSourcingRoutineDefaultsScope = GuidedFirstSourcingOwner & GuidedFirstSourcingDefaultsRequest & {
95
- sourceKey: string;
96
- };
97
- /** Observation metadata stays outside form defaults. Quoted time alone must
98
- * never reset edits; consumers reject responses outside their current scope. */
99
- export type GuidedFirstSourcingRoutineDefaultsReadback = {
100
- routineDefaults: null;
101
- routineDefaultsScope: null;
102
- } | {
103
- routineDefaults: null;
104
- routineDefaultsScope: GuidedFirstSourcingRoutineDefaultsScope & {
105
- state: "not_ready";
106
- };
107
- } | {
108
- routineDefaults: GuidedFirstSourcingRoutineDefaults;
109
- routineDefaultsScope: GuidedFirstSourcingRoutineDefaultsScope & {
110
- state: "ready";
111
- quoteDigest: string;
112
- quotedAt: string;
113
- defaultMaxCredits: number;
114
- defaultsDigest: string;
115
- };
116
- };
@@ -1,11 +0,0 @@
1
- /** Current authority witness, distinct from the provider query's stable identity.
2
- * Confirmation revisions, journey generation, navigation and preview/cap expiry
3
- * cannot turn the same approved native source into another first pull. */
4
- export function guidedFirstSourcingAudienceWitness(answers) {
5
- return {
6
- company: answers.company_review?.statement ?? null,
7
- company_size: answers.audience_company_size ?? null, markets: answers.audience_markets ?? null,
8
- industries: answers.audience_industries ?? null, personas: answers.audience_personas ?? null,
9
- signals: answers.signals ?? null,
10
- };
11
- }
@@ -1,4 +0,0 @@
1
- import type { GuidedOnboardingAnswers, GuidedOnboardingStep } from "./guided-onboarding-journey.js";
2
- /** Only the current step can be edited, never native billing/resources/research.
3
- * Validation does not claim a file is owned, a connection exists or results ran. */
4
- export declare function normalizeGuidedOnboardingAnswers(step: GuidedOnboardingStep, input: unknown): GuidedOnboardingAnswers;
@@ -1,42 +0,0 @@
1
- import { OxygenError } from "./cli-result.js";
2
- import { validateContract } from "./contracts/schema.js";
3
- import { GUIDED_ONBOARDING_ANSWERS_CONTRACT } from "./contracts/guided-onboarding-journey.js";
4
- import { normalizeGuidedOnboardingCompanyContext } from "./guided-onboarding-company-context.js";
5
- import { normalizeGuidedOnboardingSignals } from "./guided-onboarding-signals.js";
6
- const fail = (message) => { throw new OxygenError("invalid_onboarding_answer", message, { exitCode: 2 }); };
7
- const clean = (value) => value.normalize("NFKC").trim().replace(/\s+/gu, " ");
8
- const choices = (values) => {
9
- const names = values.map(clean);
10
- if (names.some(value => !value))
11
- return fail("Choose a nonempty audience value.");
12
- return [...new Map(names.map(value => [value.toLowerCase(), value])).values()];
13
- };
14
- /** Only the current step can be edited, never native billing/resources/research.
15
- * Validation does not claim a file is owned, a connection exists or results ran. */
16
- export function normalizeGuidedOnboardingAnswers(step, input) {
17
- const checked = validateContract(GUIDED_ONBOARDING_ANSWERS_CONTRACT, input, { unknown: "reject", overMax: "reject" });
18
- if (!checked.ok)
19
- return fail("Use the reviewed answer fields for this onboarding step.");
20
- const answers = checked.value;
21
- if (Object.keys(answers).some(key => key !== step))
22
- return fail("Save only the current step's answers.");
23
- if (answers.company_context)
24
- answers.company_context = normalizeGuidedOnboardingCompanyContext(answers.company_context);
25
- if (answers.company_review) {
26
- const statement = answers.company_review.statement.trim();
27
- if (!statement || !/^(?:0|[1-9]\d*)$/.test(answers.company_review.profile_revision))
28
- return fail("Review a company statement at the current native profile revision.");
29
- answers.company_review = { ...answers.company_review, statement };
30
- }
31
- for (const key of ["audience_company_size", "audience_markets", "audience_industries", "audience_personas"]) {
32
- if (answers[key])
33
- answers[key] = { values: choices(answers[key].values) };
34
- }
35
- if (answers.signals)
36
- answers.signals = normalizeGuidedOnboardingSignals(answers.signals);
37
- if (answers.prospects)
38
- answers.prospects = { ...answers.prospects, feedback: answers.prospects.feedback.trim() };
39
- if (answers.tour)
40
- answers.tour = { visited: [...new Set(answers.tour.visited)] };
41
- return answers;
42
- }