ai-spend-agent 0.9.1 → 0.9.3

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.
@@ -132,18 +132,20 @@ const identityFields = [
132
132
  {
133
133
  field: "owner", kind: "name", label: "owner",
134
134
  question: "Who is the accountable human owner of this project's AI cost?",
135
- example: "Jose Artigas"
135
+ // Neutral placeholder identities only — a real person's details in an
136
+ // e.g. hint read as prefilled truth (shipped-audit fix).
137
+ example: "Sam Rivera"
136
138
  },
137
139
  {
138
140
  field: "team", kind: "team", label: "team",
139
141
  question: "What team does this cost belong to?",
140
- example: "Futura Studio"
142
+ example: "Platform Team"
141
143
  },
142
144
  {
143
145
  field: "role", kind: "role", label: "role",
144
146
  question: "What is your approval role for this project?",
145
147
  guidance: "(A job role — not aibill's held/passed quality vocabulary.)",
146
- example: "Founder"
148
+ example: "Engineering Manager"
147
149
  },
148
150
  {
149
151
  field: "client", kind: "optional", label: "client",
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { type GuidedPromptSource } from "./guidedPrompt.js";
3
+ import { type SignupDnsResolver } from "./signup.js";
3
4
  export type CliResult = {
4
5
  exitCode: number;
5
6
  stdout: string;
@@ -17,6 +18,13 @@ export type CliRuntimeOptions = {
17
18
  interactive?: boolean;
18
19
  /** Foreground terminal prompt. Tests/embeddings must inject it explicitly. */
19
20
  prompt?: (question: string) => Promise<string>;
21
+ /**
22
+ * Consent-grade read for the explicit signup command (adversary SF1):
23
+ * buffered/type-ahead bytes never answer, EOF/^C resolve undefined. The
24
+ * bin wires signup.openTerminalConsentRead; tests inject stubs. When
25
+ * absent, `prompt` is the fallback with aborts mapped to "nothing sent".
26
+ */
27
+ consentRead?: (query: string, timeoutMs: number) => Promise<string | undefined>;
20
28
  /**
21
29
  * Guided-flow line IO for the improve/identify sittings. The foreground
22
30
  * terminal wires an arrival-timestamped readline source; tests inject
@@ -26,6 +34,16 @@ export type CliRuntimeOptions = {
26
34
  source: GuidedPromptSource;
27
35
  write: (text: string) => void;
28
36
  }>;
37
+ /** Test override for the waitlist signup POST. Production uses global fetch. */
38
+ waitlistFetch?: typeof fetch;
39
+ /** Test override for signup email deliverability DNS. Production uses node:dns. */
40
+ signupDns?: SignupDnsResolver;
41
+ /**
42
+ * Set ONLY by the bin entrypoint when telemetry is enabled AND noticed:
43
+ * every "nothing uploaded" claim then prints the disclosure line instead.
44
+ * Embedded/MCP callers never set it (and never emit telemetry).
45
+ */
46
+ telemetryDisclosure?: boolean;
29
47
  };
30
48
  export declare function runCli(argv?: string[], runtime?: CliRuntimeOptions): Promise<CliResult>;
31
49
  /**