@smooai/smooth-operator-core 0.21.0 → 0.23.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.
package/dist/index.d.ts CHANGED
@@ -13,8 +13,14 @@ export { InMemoryCheckpointStore } from './checkpoint.js';
13
13
  export type { Checkpoint, CheckpointStore } from './checkpoint.js';
14
14
  export { CostTracker, DEFAULT_PRICING } from './cost.js';
15
15
  export type { CostBudget, ModelPricing, Usage } from './cost.js';
16
- export { approve, deny, HumanDecision, isApproved } from './humanGate.js';
16
+ export { approve, approveAlways, deny, HumanDecision, isApproved } from './humanGate.js';
17
17
  export type { HumanApprovalRequest, HumanApprovalResponse, HumanGate } from './humanGate.js';
18
+ export { AutoMode, autoModeFromEnv, autoModeFromValue, decide, domainMatchesSuffixList, extractHosts, hostFromToken, PermissionHook, splitCompound, stripWrappersAndSudo, toolCategory, } from './permission.js';
19
+ export type { Category, ToolCall, ToolHook, Verdict } from './permission.js';
20
+ export { hostMatchesGlob, PermissionGrants } from './permissionGrants.js';
21
+ export type { GrantQuery } from './permissionGrants.js';
22
+ export { DenyPolicy, DenyRules, globMatch } from './denyPolicy.js';
23
+ export type { DenyPredicate } from './denyPolicy.js';
18
24
  export { InMemoryKnowledge } from './knowledge.js';
19
25
  export type { Knowledge, KnowledgeHit } from './knowledge.js';
20
26
  export { MockLlmProvider, textResponse, toolCallResponse } from './llmProvider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EACH,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,MAAM,EACN,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,YAAY,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -9,7 +9,10 @@ export { delegateTool, effectiveMaxTokens, SmoothAgent } from './agent.js';
9
9
  export { Cast, Clearance, makeRole, RoleKind } from './cast.js';
10
10
  export { InMemoryCheckpointStore } from './checkpoint.js';
11
11
  export { CostTracker, DEFAULT_PRICING } from './cost.js';
12
- export { approve, deny, HumanDecision, isApproved } from './humanGate.js';
12
+ export { approve, approveAlways, deny, HumanDecision, isApproved } from './humanGate.js';
13
+ export { AutoMode, autoModeFromEnv, autoModeFromValue, decide, domainMatchesSuffixList, extractHosts, hostFromToken, PermissionHook, splitCompound, stripWrappersAndSudo, toolCategory, } from './permission.js';
14
+ export { hostMatchesGlob, PermissionGrants } from './permissionGrants.js';
15
+ export { DenyPolicy, DenyRules, globMatch } from './denyPolicy.js';
13
16
  export { InMemoryKnowledge } from './knowledge.js';
14
17
  export { MockLlmProvider, textResponse, toolCallResponse } from './llmProvider.js';
15
18
  export { InMemoryMemory } from './memory.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzF,OAAO,EACH,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,MAAM,EACN,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,YAAY,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Native tool-call permission gate for the TypeScript engine.
3
+ *
4
+ * The TypeScript sibling of the Rust reference engine's `permission.rs`. A
5
+ * {@link PermissionHook} runs the pure, deterministic {@link decide} classifier
6
+ * on every tool call and blocks (throws) on a **Deny**. An **Ask** is routed to
7
+ * a human approver (the existing {@link HumanGate} seam) when one is wired, and
8
+ * **fails closed** (blocks) when it is not.
9
+ *
10
+ * The classification model is ported natively from smooth's `auto_mode` /
11
+ * `smooth-narc::judge`. This is the security-critical core and is exhaustively
12
+ * tested — including adversarial compound-command and credential-path inputs.
13
+ *
14
+ * A stored grant ({@link PermissionGrants}) auto-approves a matching `Ask`
15
+ * without prompting, and answering "approve always" persists a new grant. A
16
+ * grant can only upgrade an `Ask` — it can **never** waive a `Deny`
17
+ * circuit-breaker. A consumer-supplied {@link DenyPolicy} is evaluated FIRST and
18
+ * is a circuit-breaker too: no grant waives it and no mode downgrades it.
19
+ */
20
+ import type { DenyPolicy } from './denyPolicy.js';
21
+ import type { HumanGate } from './humanGate.js';
22
+ import { PermissionGrants } from './permissionGrants.js';
23
+ /** A tool call presented to a {@link ToolHook}. Mirrors the Rust engine's `ToolCall`. */
24
+ export interface ToolCall {
25
+ id: string;
26
+ name: string;
27
+ arguments: Record<string, unknown>;
28
+ }
29
+ /**
30
+ * A pre-execution gate on tool calls. `preCall` throws to block the call (the
31
+ * agent surfaces the error to the model); returning resolves the gate. Mirrors
32
+ * the Rust engine's `ToolHook::pre_call -> Result<()>`.
33
+ */
34
+ export interface ToolHook {
35
+ preCall(call: ToolCall): Promise<void>;
36
+ }
37
+ /**
38
+ * How aggressively the hook enforces. Mirrors the Rust engine's `AutoMode` (a
39
+ * trimmed Claude Code `auto-mode` set). Selected via the `SMOOTH_AUTO_MODE` env
40
+ * var through {@link autoModeFromEnv}.
41
+ */
42
+ export declare enum AutoMode {
43
+ /** Read-only allow, mutating ask, dangerous deny. Default. */
44
+ Ask = "ask",
45
+ /** Like {@link AutoMode.Ask} but filesystem-edit (`Write`) tools auto-approve. Mirrors `acceptEdits`. */
46
+ AcceptEdits = "accept-edits",
47
+ /** Like {@link AutoMode.Ask} but an unmatched verdict is a deny (fail-closed). Headless / CI posture (`dontAsk`). */
48
+ DenyUnmatched = "deny-unmatched",
49
+ /** Allow everything **except** the hard circuit-breakers. Escape hatch (`bypassPermissions`, which keeps its breakers). */
50
+ Bypass = "bypass"
51
+ }
52
+ /** Parse a `SMOOTH_AUTO_MODE` value. Unknown / unset ⇒ {@link AutoMode.Ask}. */
53
+ export declare function autoModeFromValue(v: string | undefined): AutoMode;
54
+ /** Read the mode from the process `SMOOTH_AUTO_MODE` environment variable. */
55
+ export declare function autoModeFromEnv(): AutoMode;
56
+ /** The pure verdict returned by {@link decide}. A discriminated union on `kind`. */
57
+ export type Verdict = {
58
+ kind: 'allow';
59
+ } | {
60
+ kind: 'deny';
61
+ reason: string;
62
+ } | {
63
+ kind: 'ask';
64
+ reason: string;
65
+ };
66
+ /** Match a domain against a suffix list (exact or subdomain), case-insensitive. */
67
+ export declare function domainMatchesSuffixList(domain: string, suffixes: readonly string[]): boolean;
68
+ /**
69
+ * Split a shell command line into subcommands on the operators that sequence
70
+ * independent commands: `&&`, `||`, `;`, `|`, `&`, and newlines. Command /
71
+ * process substitution (`$(…)`, `` `…` ``, `<(…)`) is surfaced as its own
72
+ * segment so it can't ride in on a safe outer command.
73
+ *
74
+ * ponytail: substring split, not a real shell lexer — upgrade only if quoting
75
+ * edge-cases (`echo "a && b"`) start mattering for policy.
76
+ */
77
+ export declare function splitCompound(command: string): string[];
78
+ /** Pull a bare hostname out of a URL-ish or `host:port` token. */
79
+ export declare function hostFromToken(tok: string): string | undefined;
80
+ /** Extract candidate hostnames from a single (already split) net-tool subcommand. */
81
+ export declare function extractHosts(subcommand: string): string[];
82
+ /**
83
+ * Strip leading transparent wrappers and any leading `sudo` from a single
84
+ * subcommand, returning the remaining command text. Used by the deny policy so a
85
+ * rule anchored on the real binary (`aws …`) still matches `sudo aws …` /
86
+ * `timeout 5 aws …`.
87
+ */
88
+ export declare function stripWrappersAndSudo(subcommand: string): string;
89
+ /** Category a tool falls into, derived from its name. Drives the default posture for non-bash tools. */
90
+ export type Category = 'bash' | 'network' | 'write' | 'safe' | 'unknown';
91
+ export declare function toolCategory(name: string): Category;
92
+ /**
93
+ * The pure, deterministic permission decision. No async, no I/O — the
94
+ * security-critical core, tested exhaustively.
95
+ *
96
+ * `args` is the raw tool-call argument object; the relevant field is pulled per
97
+ * category (`cmd` for bash, `path` for writes, `url`/`host` for network).
98
+ */
99
+ export declare function decide(mode: AutoMode, toolName: string, args: Record<string, unknown>): Verdict;
100
+ /**
101
+ * A {@link ToolHook} that enforces {@link decide} on every tool call.
102
+ *
103
+ * **`Ask` routing**: with an approver wired via {@link PermissionHook.withApprover}
104
+ * (the existing {@link HumanGate} seam), an `Ask` verdict prompts a human and
105
+ * blocks until they approve; with no approver it **fails closed** (throws).
106
+ * {@link AutoMode.Bypass} / {@link AutoMode.AcceptEdits} downgrade eligible asks
107
+ * inside {@link decide} before they reach the approver. A `Deny` always blocks
108
+ * and is never routed to the human — circuit-breakers are not waivable. A
109
+ * consumer {@link DenyPolicy}, when attached, is evaluated FIRST and is a
110
+ * circuit-breaker of the same tier.
111
+ */
112
+ export declare class PermissionHook implements ToolHook {
113
+ private readonly autoMode;
114
+ private approver?;
115
+ private grants?;
116
+ private denyPolicyRef?;
117
+ constructor(autoMode?: AutoMode);
118
+ /** Build a hook reading the mode from `SMOOTH_AUTO_MODE` (default `Ask`). */
119
+ static fromEnv(): PermissionHook;
120
+ /**
121
+ * Wire an interactive approver. When set, an `Ask` verdict consults the
122
+ * {@link HumanGate} and blocks on its response — approve lets the call run,
123
+ * anything else blocks it. Answering with `remember: true`
124
+ * ({@link approveAlways}) persists a grant when {@link withGrants} is set.
125
+ */
126
+ withApprover(gate: HumanGate): this;
127
+ /**
128
+ * Wire the in-memory allow-list. A matching grant auto-approves an `Ask`
129
+ * *before* prompting; an `approve always` answer adds a fresh grant so the
130
+ * next identical `Ask` is silent. The consumer owns persisting `grants`.
131
+ */
132
+ withGrants(grants: PermissionGrants): this;
133
+ /**
134
+ * Attach a consumer {@link DenyPolicy}. Purely additive: with none attached
135
+ * enforcement is identical to before. When set it is evaluated **first** — a
136
+ * match is a hard deny (circuit-breaker tier) no grant can waive and no
137
+ * {@link AutoMode} can downgrade.
138
+ */
139
+ withDenyPolicy(policy: DenyPolicy): this;
140
+ /** The mode this hook enforces. */
141
+ get mode(): AutoMode;
142
+ preCall(call: ToolCall): Promise<void>;
143
+ /** Add an approve-always grant to the in-memory allow-list. */
144
+ private persistGrant;
145
+ }
146
+ //# sourceMappingURL=permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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"}