@smooai/smooth-operator-core 1.7.10 → 1.7.12

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.
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Project context loader — AGENTS.md (or its fallbacks) plus resolved file
3
+ * references. The TypeScript port of the Rust reference
4
+ * `smooth-operator-core::context` (pearl th-5002c4).
5
+ *
6
+ * Smooth previously only read AGENTS.md. Many projects don't have one but DO
7
+ * have CLAUDE.md or a SMOOTH.md or .smooth/CONTEXT.md. User-level facts also
8
+ * belong in the prompt, so we walk a preference order and STACK user-level +
9
+ * project-level context.
10
+ *
11
+ * Preference order (first hit per layer; layers stack):
12
+ *
13
+ * - USER layer (read once, prepended):
14
+ * `~/.smooth/CONTEXT.md` → `~/.smooth/AGENTS.md` → `~/.smooth/CLAUDE.md`
15
+ *
16
+ * - PROJECT layer (walk up from `workingDir`, first hit wins):
17
+ * `<dir>/.smooth/CONTEXT.md` → `<dir>/SMOOTH.md` → `<dir>/AGENTS.md` → `<dir>/CLAUDE.md`
18
+ *
19
+ * AGENTS.md / SMOOTH.md can carry file references in a `## File References`
20
+ * section:
21
+ *
22
+ * ```markdown
23
+ * ## File References
24
+ * - [CLAUDE.md](CLAUDE.md) — full file
25
+ * - [Section name](CLAUDE.md#6-pearl-tracking) — specific section
26
+ * ```
27
+ *
28
+ * Those are resolved against the file's directory and appended inline. The
29
+ * combined string is what the host injects into the agent's system prompt —
30
+ * like the Rust reference, this is a standalone loader, NOT a hook inside the
31
+ * agent loop.
32
+ */
33
+ /** A parsed file reference from the `## File References` section. */
34
+ export interface FileRef {
35
+ /** Display label from the markdown link text. */
36
+ label: string;
37
+ /** Relative file path (without fragment). */
38
+ path: string;
39
+ /** Optional `#fragment` pointing to a heading. */
40
+ fragment?: string;
41
+ /** Optional description after the ` — `. */
42
+ description?: string;
43
+ }
44
+ /**
45
+ * Load the combined project + user context, user-level prepended, with file
46
+ * references in any AGENTS.md / SMOOTH.md resolved inline.
47
+ *
48
+ * `undefined` only when NEITHER layer found anything — so a workspace with a
49
+ * bare CLAUDE.md and no user-level file still loads context.
50
+ */
51
+ export declare function loadProjectContext(workingDir: string): string | undefined;
52
+ /**
53
+ * Walk up from `startDir` looking for a project context file. Preference order
54
+ * at each level: `.smooth/CONTEXT.md` → `SMOOTH.md` → `AGENTS.md` →
55
+ * `CLAUDE.md`. First hit wins per directory, then keep walking up.
56
+ */
57
+ export declare function findProjectContextFile(startDir: string): string | undefined;
58
+ /**
59
+ * Parse the `## File References` section out of AGENTS.md content. Expects
60
+ * markdown list items like `- [Label](path.md#fragment) — description`.
61
+ */
62
+ export declare function parseFileReferences(content: string): FileRef[];
63
+ /** Parse a single markdown list-item link line. */
64
+ export declare function parseLinkLine(line: string): FileRef | undefined;
65
+ /**
66
+ * Extract a markdown section by heading fragment. The fragment is matched
67
+ * against GitHub-style heading anchors; the section runs until the next
68
+ * heading at the same or a higher level.
69
+ */
70
+ export declare function extractSection(content: string, fragment: string): string;
71
+ /** Convert heading text to a GitHub-style anchor. */
72
+ export declare function headingToAnchor(text: string): string;
73
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH,qEAAqE;AACrE,MAAM,WAAW,OAAO;IACpB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzE;AAsCD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAe3E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAkB9D;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAuC/D;AAcD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoBxE;AAYD,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Project context loader — AGENTS.md (or its fallbacks) plus resolved file
3
+ * references. The TypeScript port of the Rust reference
4
+ * `smooth-operator-core::context` (pearl th-5002c4).
5
+ *
6
+ * Smooth previously only read AGENTS.md. Many projects don't have one but DO
7
+ * have CLAUDE.md or a SMOOTH.md or .smooth/CONTEXT.md. User-level facts also
8
+ * belong in the prompt, so we walk a preference order and STACK user-level +
9
+ * project-level context.
10
+ *
11
+ * Preference order (first hit per layer; layers stack):
12
+ *
13
+ * - USER layer (read once, prepended):
14
+ * `~/.smooth/CONTEXT.md` → `~/.smooth/AGENTS.md` → `~/.smooth/CLAUDE.md`
15
+ *
16
+ * - PROJECT layer (walk up from `workingDir`, first hit wins):
17
+ * `<dir>/.smooth/CONTEXT.md` → `<dir>/SMOOTH.md` → `<dir>/AGENTS.md` → `<dir>/CLAUDE.md`
18
+ *
19
+ * AGENTS.md / SMOOTH.md can carry file references in a `## File References`
20
+ * section:
21
+ *
22
+ * ```markdown
23
+ * ## File References
24
+ * - [CLAUDE.md](CLAUDE.md) — full file
25
+ * - [Section name](CLAUDE.md#6-pearl-tracking) — specific section
26
+ * ```
27
+ *
28
+ * Those are resolved against the file's directory and appended inline. The
29
+ * combined string is what the host injects into the agent's system prompt —
30
+ * like the Rust reference, this is a standalone loader, NOT a hook inside the
31
+ * agent loop.
32
+ */
33
+ import { readFileSync, statSync } from 'node:fs';
34
+ import { homedir } from 'node:os';
35
+ import { dirname, join } from 'node:path';
36
+ const USER_CONTEXT_CANDIDATES = ['.smooth/CONTEXT.md', '.smooth/AGENTS.md', '.smooth/CLAUDE.md'];
37
+ const PROJECT_CONTEXT_CANDIDATES = ['.smooth/CONTEXT.md', 'SMOOTH.md', 'AGENTS.md', 'CLAUDE.md'];
38
+ /**
39
+ * Load the combined project + user context, user-level prepended, with file
40
+ * references in any AGENTS.md / SMOOTH.md resolved inline.
41
+ *
42
+ * `undefined` only when NEITHER layer found anything — so a workspace with a
43
+ * bare CLAUDE.md and no user-level file still loads context.
44
+ */
45
+ export function loadProjectContext(workingDir) {
46
+ const user = loadUserContext();
47
+ const project = loadLayeredProjectContext(workingDir);
48
+ if (user === undefined && project === undefined)
49
+ return undefined;
50
+ if (project === undefined)
51
+ return `## User context (~/.smooth)\n\n${user}`;
52
+ if (user === undefined)
53
+ return project;
54
+ return `## User context (~/.smooth)\n\n${user}\n\n---\n\n${project}`;
55
+ }
56
+ /** First non-blank hit from the user-level preference list. */
57
+ function loadUserContext() {
58
+ const home = homedir();
59
+ if (!home)
60
+ return undefined;
61
+ for (const candidate of USER_CONTEXT_CANDIDATES) {
62
+ const raw = readFileOrUndefined(join(home, candidate));
63
+ if (raw !== undefined && raw.trim() !== '')
64
+ return raw;
65
+ }
66
+ return undefined;
67
+ }
68
+ /** The project context file with its file references resolved. */
69
+ function loadLayeredProjectContext(workingDir) {
70
+ const contextPath = findProjectContextFile(workingDir);
71
+ if (contextPath === undefined)
72
+ return undefined;
73
+ const raw = readFileOrUndefined(contextPath);
74
+ if (raw === undefined)
75
+ return undefined;
76
+ const refs = parseFileReferences(raw);
77
+ if (refs.length === 0)
78
+ return raw;
79
+ const resolved = resolveReferences(dirname(contextPath), refs);
80
+ if (resolved.length === 0)
81
+ return raw;
82
+ let output = raw;
83
+ output += '\n---\n\n## Resolved File References\n\n';
84
+ for (const { ref, content } of resolved) {
85
+ output += ref.description === undefined ? `### ${ref.label}\n` : `### ${ref.label} — ${ref.description}\n`;
86
+ output += '\n```\n';
87
+ output += content;
88
+ if (!content.endsWith('\n'))
89
+ output += '\n';
90
+ output += '```\n\n';
91
+ }
92
+ return output;
93
+ }
94
+ /**
95
+ * Walk up from `startDir` looking for a project context file. Preference order
96
+ * at each level: `.smooth/CONTEXT.md` → `SMOOTH.md` → `AGENTS.md` →
97
+ * `CLAUDE.md`. First hit wins per directory, then keep walking up.
98
+ */
99
+ export function findProjectContextFile(startDir) {
100
+ let dir = startDir;
101
+ for (;;) {
102
+ for (const candidate of PROJECT_CONTEXT_CANDIDATES) {
103
+ const path = join(dir, candidate);
104
+ try {
105
+ if (statSync(path).isFile())
106
+ return path;
107
+ }
108
+ catch {
109
+ // Not there — try the next candidate.
110
+ }
111
+ }
112
+ const parent = dirname(dir);
113
+ if (parent === dir)
114
+ return undefined;
115
+ dir = parent;
116
+ }
117
+ }
118
+ /**
119
+ * Parse the `## File References` section out of AGENTS.md content. Expects
120
+ * markdown list items like `- [Label](path.md#fragment) — description`.
121
+ */
122
+ export function parseFileReferences(content) {
123
+ const refs = [];
124
+ let inSection = false;
125
+ for (const line of splitLines(content)) {
126
+ const trimmed = line.trim();
127
+ // Detect the file references section.
128
+ if (trimmed.startsWith('## ') || trimmed.startsWith('# ')) {
129
+ inSection = trimmed.toLowerCase().includes('file reference');
130
+ continue;
131
+ }
132
+ if (!inSection)
133
+ continue;
134
+ const ref = parseLinkLine(trimmed);
135
+ if (ref !== undefined)
136
+ refs.push(ref);
137
+ }
138
+ return refs;
139
+ }
140
+ /** Parse a single markdown list-item link line. */
141
+ export function parseLinkLine(line) {
142
+ // Strip leading `- ` or `* `.
143
+ let rest;
144
+ if (line.startsWith('- '))
145
+ rest = line.slice(2);
146
+ else if (line.startsWith('* '))
147
+ rest = line.slice(2);
148
+ else
149
+ return undefined;
150
+ // Match [label](target).
151
+ const openBracket = rest.indexOf('[');
152
+ if (openBracket < 0)
153
+ return undefined;
154
+ const closeBracket = rest.indexOf(']', openBracket);
155
+ if (closeBracket < 0)
156
+ return undefined;
157
+ const label = rest.slice(openBracket + 1, closeBracket);
158
+ const after = rest.slice(closeBracket + 1);
159
+ const openParen = after.indexOf('(');
160
+ if (openParen < 0)
161
+ return undefined;
162
+ const closeParen = after.indexOf(')', openParen);
163
+ if (closeParen < 0)
164
+ return undefined;
165
+ const target = after.slice(openParen + 1, closeParen);
166
+ // Split path and fragment.
167
+ const hash = target.indexOf('#');
168
+ const path = hash < 0 ? target : target.slice(0, hash);
169
+ const fragment = hash < 0 ? undefined : target.slice(hash + 1);
170
+ // Description after ` — ` / ` - ` / ` -- `.
171
+ const afterLink = after.slice(closeParen + 1);
172
+ let description;
173
+ for (const sep of [' — ', ' - ', ' -- ']) {
174
+ if (afterLink.startsWith(sep)) {
175
+ const d = afterLink.slice(sep.length).trim();
176
+ if (d !== '')
177
+ description = d;
178
+ break;
179
+ }
180
+ }
181
+ if (path === '' && fragment === undefined)
182
+ return undefined;
183
+ return { label, path, fragment, description };
184
+ }
185
+ /** Resolve file references against a base directory, skipping unreadable ones. */
186
+ function resolveReferences(baseDir, refs) {
187
+ const results = [];
188
+ for (const ref of refs) {
189
+ const raw = readFileOrUndefined(join(baseDir, ref.path));
190
+ if (raw === undefined)
191
+ continue; // Skip unreadable files.
192
+ const content = ref.fragment === undefined ? raw : extractSection(raw, ref.fragment);
193
+ if (content.trim() !== '')
194
+ results.push({ ref, content });
195
+ }
196
+ return results;
197
+ }
198
+ /**
199
+ * Extract a markdown section by heading fragment. The fragment is matched
200
+ * against GitHub-style heading anchors; the section runs until the next
201
+ * heading at the same or a higher level.
202
+ */
203
+ export function extractSection(content, fragment) {
204
+ const target = headingToAnchor(fragment);
205
+ const lines = splitLines(content);
206
+ let start = -1;
207
+ let startLevel = 0;
208
+ for (let i = 0; i < lines.length; i++) {
209
+ const heading = parseHeading(lines[i]);
210
+ if (heading === undefined)
211
+ continue;
212
+ const anchor = headingToAnchor(heading.text);
213
+ if (anchor === target || anchor.includes(target) || target.includes(anchor)) {
214
+ start = i;
215
+ startLevel = heading.level;
216
+ continue;
217
+ }
218
+ // Started capturing and hit a same-or-higher-level heading: stop.
219
+ if (start >= 0 && heading.level <= startLevel)
220
+ return lines.slice(start, i).join('\n');
221
+ }
222
+ return start >= 0 ? lines.slice(start).join('\n') : '';
223
+ }
224
+ /** Parse a markdown heading line into its level and text. */
225
+ function parseHeading(line) {
226
+ const trimmed = line.trim();
227
+ if (!trimmed.startsWith('#'))
228
+ return undefined;
229
+ const level = trimmed.length - trimmed.replace(/^#+/, '').length;
230
+ const text = trimmed.slice(level).trim();
231
+ if (text === '')
232
+ return undefined;
233
+ return { level, text };
234
+ }
235
+ /** Convert heading text to a GitHub-style anchor. */
236
+ export function headingToAnchor(text) {
237
+ let out = '';
238
+ for (const ch of text.toLowerCase()) {
239
+ if (/[\p{L}\p{N}\-_]/u.test(ch))
240
+ out += ch;
241
+ else if (ch === ' ')
242
+ out += '-';
243
+ // Other characters are dropped.
244
+ }
245
+ // Single non-overlapping pass, matching Rust's `str::replace`.
246
+ return out.replaceAll('--', '-');
247
+ }
248
+ /** `undefined` instead of throwing, for any unreadable path. */
249
+ function readFileOrUndefined(path) {
250
+ try {
251
+ return readFileSync(path, 'utf8');
252
+ }
253
+ catch {
254
+ return undefined;
255
+ }
256
+ }
257
+ /**
258
+ * Mirrors Rust's `str::lines`: split on \n, drop a trailing \r on each line,
259
+ * and emit no trailing empty line for a final newline.
260
+ */
261
+ function splitLines(s) {
262
+ if (s === '')
263
+ return [];
264
+ const body = s.endsWith('\n') ? s.slice(0, -1) : s;
265
+ return body.split('\n').map((line) => (line.endsWith('\r') ? line.slice(0, -1) : line));
266
+ }
267
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,8 @@ export { Cast, Clearance, makeRole, RoleKind } from './cast.js';
11
11
  export type { OperatorRole } from './cast.js';
12
12
  export { InMemoryCheckpointStore } from './checkpoint.js';
13
13
  export type { Checkpoint, CheckpointStore } from './checkpoint.js';
14
+ export { extractSection, findProjectContextFile, headingToAnchor, loadProjectContext, parseFileReferences, parseLinkLine } from './context.js';
15
+ export type { FileRef } from './context.js';
14
16
  export { CostTracker, DEFAULT_PRICING, GATEWAY_COST_HEADERS, parseGatewayCost } from './cost.js';
15
17
  export type { CostBudget, HeaderLike, ModelPricing, Usage } from './cost.js';
16
18
  export { approve, approveAlways, deny, HumanDecision, isApproved } from './humanGate.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,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9K,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,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACjG,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC7E,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,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@
8
8
  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
+ export { extractSection, findProjectContextFile, headingToAnchor, loadProjectContext, parseFileReferences, parseLinkLine } from './context.js';
11
12
  export { CostTracker, DEFAULT_PRICING, GATEWAY_COST_HEADERS, parseGatewayCost } from './cost.js';
12
13
  export { approve, approveAlways, deny, HumanDecision, isApproved } from './humanGate.js';
13
14
  export { AutoMode, autoModeFromEnv, autoModeFromValue, decide, domainMatchesSuffixList, extractHosts, hostFromToken, PermissionHook, splitCompound, stripWrappersAndSudo, toolCategory, } from './permission.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,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjG,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"}
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,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/I,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjG,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smooai/smooth-operator-core",
3
- "version": "1.7.10",
3
+ "version": "1.7.12",
4
4
  "description": "Native TypeScript implementation of the smooth-operator agent engine — an in-process, OpenAI-compatible agentic tool-calling loop with knowledge grounding. The TypeScript sibling of the Rust reference engine, the C# core, and the Python core.",
5
5
  "type": "module",
6
6
  "license": "MIT",