@felan-ai/felan 0.1.0-alpha.2 → 0.1.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/NOTICE +11 -0
- package/README.md +34 -5
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +9 -2
- package/dist/application.js.map +1 -1
- package/dist/extensions.d.ts +4 -1
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +25 -8
- package/dist/extensions.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +10 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +153 -122
- package/dist/runtime.js.map +1 -1
- package/dist/subagents/catalog.d.ts +8 -0
- package/dist/subagents/catalog.d.ts.map +1 -0
- package/dist/subagents/catalog.js +132 -0
- package/dist/subagents/catalog.js.map +1 -0
- package/dist/subagents/host.d.ts +85 -0
- package/dist/subagents/host.d.ts.map +1 -0
- package/dist/subagents/host.js +991 -0
- package/dist/subagents/host.js.map +1 -0
- package/dist/subagents/presenter.d.ts +11 -0
- package/dist/subagents/presenter.d.ts.map +1 -0
- package/dist/subagents/presenter.js +34 -0
- package/dist/subagents/presenter.js.map +1 -0
- package/dist/subagents/store.d.ts +17 -0
- package/dist/subagents/store.d.ts.map +1 -0
- package/dist/subagents/store.js +34 -0
- package/dist/subagents/store.js.map +1 -0
- package/package.json +14 -8
package/NOTICE
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
@felan-ai/felan
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Felan contributors
|
|
4
|
+
|
|
5
|
+
This package composes the MIT-licensed @felan-ai/agent-core and Felan extension
|
|
6
|
+
packages listed in package.json. Their package-level LICENSE and NOTICE files
|
|
7
|
+
contain the applicable attribution and source provenance.
|
|
8
|
+
|
|
9
|
+
The terminal application uses @earendil-works/pi-coding-agent 0.83.0 from
|
|
10
|
+
https://github.com/earendil-works/pi, licensed under the MIT License.
|
|
11
|
+
Copyright (c) 2025 Mario Zechner.
|
package/README.md
CHANGED
|
@@ -21,14 +21,43 @@ not an isolation boundary.
|
|
|
21
21
|
Only the source-controlled Felan extension package list is imported. Ambient Pi
|
|
22
22
|
packages, extensions, skills, prompts, themes, and context files remain filtered;
|
|
23
23
|
inline Felan extensions can still provide shared tools, prompts, interaction,
|
|
24
|
-
and subagent behavior. The
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
and subagent behavior. The application explicitly configures
|
|
25
|
+
`@felan-ai/ext-subagents` with its session-bound local host; the extension provides `Agent`, `list_subagents`,
|
|
26
|
+
`get_subagent_result`, `steer_subagent`, and `cancel_subagent`. A root-scoped
|
|
27
|
+
local host tracks foreground and background runs, persists the latest child session
|
|
28
|
+
metadata, delivers completion notices, supports bounded nesting, and uses the
|
|
29
|
+
application's current workspace. The TUI status line shows active/recent child
|
|
30
|
+
state, and runtime shutdown awaits active-child cancellation before Pi teardown.
|
|
31
|
+
Completed-child continuation uses the same child ID and Pi session file while
|
|
32
|
+
replacing the latest result. The default list also
|
|
33
|
+
includes `@felan-ai/ext-powerline` for an ANSI-aware footer; it is a direct TUI
|
|
34
|
+
dependency and is not part of cloud composition.
|
|
35
|
+
|
|
36
|
+
Local agent definitions are loaded only from bundled Felan definitions,
|
|
37
|
+
`$FELAN_AGENT_DIR/agents/*.md`, and `<workspace>/.felan/agents/*.md`, with
|
|
38
|
+
project definitions taking precedence. Pi ambient agent discovery remains
|
|
39
|
+
disabled. Local subagent concurrency defaults to four and depth defaults to
|
|
40
|
+
three; set `felanSubagents.concurrency` and `felanSubagents.maxDepth` in the
|
|
41
|
+
Felan settings file to configure those bounded values.
|
|
42
|
+
|
|
43
|
+
Local model selectors are deterministic and support explicit inheritance or an
|
|
44
|
+
exact authenticated `provider/model`; exact selectors never fall back. Requested
|
|
45
|
+
thinking levels are checked against that resolved model and unsupported levels
|
|
46
|
+
return `unsupported_thinking` instead of being silently clamped.
|
|
29
47
|
|
|
30
48
|
```sh
|
|
31
49
|
felan --diagnostics
|
|
32
50
|
```
|
|
33
51
|
|
|
34
52
|
Diagnostics include the Felan, Agent Core, Pi, and Node.js versions.
|
|
53
|
+
|
|
54
|
+
## Development
|
|
55
|
+
|
|
56
|
+
Source: `apps/tui` in <https://github.com/felan-ai/felan>.
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
corepack enable
|
|
60
|
+
pnpm install --frozen-lockfile
|
|
61
|
+
pnpm --filter @felan-ai/felan build
|
|
62
|
+
pnpm --filter @felan-ai/felan test
|
|
63
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,oBAAqB,SAAQ,8BAA8B;IAC1E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrF"}
|
package/dist/application.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InteractiveMode } from '@earendil-works/pi-coding-agent';
|
|
2
|
-
import { createLocalFelanRuntime } from './runtime.js';
|
|
2
|
+
import { createLocalFelanRuntime, } from './runtime.js';
|
|
3
|
+
import { attachLocalSubagentPresenter } from './subagents/presenter.js';
|
|
3
4
|
export async function runLocalFelan(options = {}) {
|
|
4
5
|
const runtime = await createLocalFelanRuntime(options);
|
|
5
6
|
const previousPiAgentDir = process.env.PI_CODING_AGENT_DIR;
|
|
@@ -9,7 +10,13 @@ export async function runLocalFelan(options = {}) {
|
|
|
9
10
|
...(options.initialMessage === undefined ? {} : { initialMessage: options.initialMessage }),
|
|
10
11
|
...(options.verbose === undefined ? {} : { verbose: options.verbose }),
|
|
11
12
|
});
|
|
12
|
-
|
|
13
|
+
const detachPresenter = attachLocalSubagentPresenter(runtime, mode);
|
|
14
|
+
try {
|
|
15
|
+
await mode.run();
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
detachPresenter();
|
|
19
|
+
}
|
|
13
20
|
}
|
|
14
21
|
finally {
|
|
15
22
|
try {
|
package/dist/application.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EACL,uBAAuB,GAExB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAOxE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAgC,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE;YACxC,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACvE,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,4BAA4B,CAClD,OAAO,EACP,IAAqE,CACtE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,eAAe,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/extensions.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { ExtensionPackageImporter } from '@felan-ai/agent-core';
|
|
2
|
-
|
|
2
|
+
import { type SubagentHost } from '@felan-ai/ext-subagents';
|
|
3
|
+
export declare const subagentsExtensionPackage = "@felan-ai/ext-subagents";
|
|
4
|
+
export declare const localExtensionPackages: readonly ["@felan-ai/ext-subagents", "@felan-ai/ext-prewalk", "@felan-ai/ext-context", "@felan-ai/ext-powerline"];
|
|
3
5
|
export declare const importLocalExtension: ExtensionPackageImporter;
|
|
6
|
+
export declare function createLocalExtensionImporter(host: SubagentHost, importExtension?: ExtensionPackageImporter, shutdownHost?: () => Promise<void>): ExtensionPackageImporter;
|
|
4
7
|
//# sourceMappingURL=extensions.d.ts.map
|
package/dist/extensions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,sBAAsB,mHAKzB,CAAC;AAIX,eAAO,MAAM,oBAAoB,EAAE,wBAKlC,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,YAAY,EAClB,eAAe,GAAE,wBAA+C,EAChE,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACjC,wBAAwB,CAiB1B"}
|
package/dist/extensions.js
CHANGED
|
@@ -1,18 +1,35 @@
|
|
|
1
|
+
import { createSubagentsExtension, } from '@felan-ai/ext-subagents';
|
|
2
|
+
export const subagentsExtensionPackage = '@felan-ai/ext-subagents';
|
|
1
3
|
export const localExtensionPackages = [
|
|
4
|
+
'@felan-ai/ext-subagents',
|
|
2
5
|
'@felan-ai/ext-prewalk',
|
|
3
6
|
'@felan-ai/ext-context',
|
|
4
7
|
'@felan-ai/ext-powerline',
|
|
5
8
|
];
|
|
6
|
-
const
|
|
7
|
-
'@felan-ai/ext-prewalk': () => import('@felan-ai/ext-prewalk'),
|
|
8
|
-
'@felan-ai/ext-context': () => import('@felan-ai/ext-context'),
|
|
9
|
-
'@felan-ai/ext-powerline': () => import('@felan-ai/ext-powerline'),
|
|
10
|
-
};
|
|
9
|
+
const localExtensionPackageSet = new Set(localExtensionPackages);
|
|
11
10
|
export const importLocalExtension = async (packageName) => {
|
|
12
|
-
|
|
13
|
-
if (!importExtension) {
|
|
11
|
+
if (!localExtensionPackageSet.has(packageName)) {
|
|
14
12
|
throw new Error(`Unknown local extension package: ${packageName}`);
|
|
15
13
|
}
|
|
16
|
-
return
|
|
14
|
+
return import(packageName);
|
|
17
15
|
};
|
|
16
|
+
export function createLocalExtensionImporter(host, importExtension = importLocalExtension, shutdownHost) {
|
|
17
|
+
return async (packageName) => {
|
|
18
|
+
if (packageName === subagentsExtensionPackage) {
|
|
19
|
+
const subagents = createSubagentsExtension(host);
|
|
20
|
+
return {
|
|
21
|
+
default: ((pi) => {
|
|
22
|
+
subagents(pi);
|
|
23
|
+
if (shutdownHost) {
|
|
24
|
+
pi.on('session_shutdown', async (event) => {
|
|
25
|
+
if (event.reason !== 'reload')
|
|
26
|
+
await shutdownHost();
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return importExtension(packageName);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
18
35
|
//# sourceMappingURL=extensions.js.map
|
package/dist/extensions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,yBAAyB;IACzB,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;CACjB,CAAC;AAEX,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEtF,MAAM,CAAC,MAAM,oBAAoB,GAA6B,KAAK,EAAE,WAAW,EAAE,EAAE;IAClF,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAC1C,IAAkB,EAClB,kBAA4C,oBAAoB,EAChE,YAAkC;IAElC,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE;QAC3B,IAAI,WAAW,KAAK,yBAAyB,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;oBACf,SAAS,CAAC,EAAE,CAAC,CAAC;oBACd,IAAI,YAAY,EAAE,CAAC;wBACjB,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;4BACxC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;gCAAE,MAAM,YAAY,EAAE,CAAC;wBACtD,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAuD;aACzD,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ export type { RunLocalFelanOptions } from './application.js';
|
|
|
3
3
|
export { runCli } from './cli-main.js';
|
|
4
4
|
export type { CliDependencies } from './cli-main.js';
|
|
5
5
|
export { importLocalExtension, localExtensionPackages } from './extensions.js';
|
|
6
|
-
export { createLocalFelanRuntime, createLocalModelRuntime,
|
|
7
|
-
export
|
|
6
|
+
export { createLocalFelanRuntime, createLocalModelRuntime, createLocalSessionRuntimeFactory, getLocalAgentDir, } from './runtime.js';
|
|
7
|
+
export { LocalSubagentHost } from './subagents/host.js';
|
|
8
|
+
export type { CreateLocalSubagentHostOptions, LocalSubagentSettings, LocalSubagentView, } from './subagents/host.js';
|
|
9
|
+
export type { CreateLocalFelanRuntimeOptions, CreateLocalSessionRuntimeFactoryOptions, LocalFelanRuntime, } from './runtime.js';
|
|
8
10
|
export { createLocalSettingsManager } from './settings.js';
|
|
9
11
|
export { FELAN_VERSION } from './version.js';
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,8BAA8B,EAC9B,uCAAuC,EACvC,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { runLocalFelan } from './application.js';
|
|
2
2
|
export { runCli } from './cli-main.js';
|
|
3
3
|
export { importLocalExtension, localExtensionPackages } from './extensions.js';
|
|
4
|
-
export { createLocalFelanRuntime, createLocalModelRuntime,
|
|
4
|
+
export { createLocalFelanRuntime, createLocalModelRuntime, createLocalSessionRuntimeFactory, getLocalAgentDir, } from './runtime.js';
|
|
5
|
+
export { LocalSubagentHost } from './subagents/host.js';
|
|
5
6
|
export { createLocalSettingsManager } from './settings.js';
|
|
6
7
|
export { FELAN_VERSION } from './version.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { ModelRuntime, SessionManager, type AgentRuntime, type
|
|
1
|
+
import { ModelRuntime, SessionManager, type AgentRuntime, type CreateAgentSessionRuntimeFactory, type ExtensionPackageImporter } from '@felan-ai/agent-core';
|
|
2
|
+
import { type AgentSessionRuntime } from '@earendil-works/pi-coding-agent';
|
|
3
|
+
import { LocalSubagentHost, type LocalSubagentSettings } from './subagents/host.js';
|
|
4
|
+
export type LocalFelanRuntime = AgentSessionRuntime & {
|
|
5
|
+
readonly localSubagentHost: LocalSubagentHost;
|
|
6
|
+
subscribeLocalSubagentHost(listener: (host: LocalSubagentHost) => void): () => void;
|
|
7
|
+
};
|
|
2
8
|
export interface CreateLocalSessionRuntimeFactoryOptions {
|
|
3
9
|
readonly agentDir: string;
|
|
4
10
|
readonly modelRuntime: ModelRuntime;
|
|
5
11
|
readonly extensionPackages?: readonly string[];
|
|
6
12
|
readonly importExtension?: ExtensionPackageImporter;
|
|
7
13
|
readonly runtimeFactory?: (cwd: string) => AgentRuntime;
|
|
14
|
+
readonly subagentSettings?: LocalSubagentSettings;
|
|
8
15
|
}
|
|
9
16
|
export interface CreateLocalFelanRuntimeOptions {
|
|
10
17
|
readonly cwd?: string;
|
|
@@ -14,10 +21,10 @@ export interface CreateLocalFelanRuntimeOptions {
|
|
|
14
21
|
readonly modelRuntime?: ModelRuntime;
|
|
15
22
|
readonly sessionDir?: string;
|
|
16
23
|
readonly runtimeFactory?: (cwd: string) => AgentRuntime;
|
|
24
|
+
readonly subagentSettings?: LocalSubagentSettings;
|
|
17
25
|
}
|
|
18
26
|
export declare function getLocalAgentDir(): string;
|
|
19
27
|
export declare function createLocalSessionRuntimeFactory(options: CreateLocalSessionRuntimeFactoryOptions): CreateAgentSessionRuntimeFactory;
|
|
20
|
-
export declare function createLocalSessionHost(options: CreateLocalSessionRuntimeFactoryOptions, cwd: string): AgentSessionHost;
|
|
21
28
|
export declare function createLocalModelRuntime(agentDir: string): Promise<ModelRuntime>;
|
|
22
|
-
export declare function createLocalFelanRuntime(options?: CreateLocalFelanRuntimeOptions): Promise<
|
|
29
|
+
export declare function createLocalFelanRuntime(options?: CreateLocalFelanRuntimeOptions): Promise<LocalFelanRuntime>;
|
|
23
30
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,YAAY,EACZ,cAAc,EAGd,KAAK,YAAY,EAEjB,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAe7B,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG;IACpD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,0BAA0B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACrF,CAAC;AAEF,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;IACxD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACnD;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC;IACxD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACnD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CAoElC;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAKrF;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,iBAAiB,CAAC,CAwB5B"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,26 +1,54 @@
|
|
|
1
|
-
import { mkdir } from 'node:fs/promises';
|
|
1
|
+
import { mkdir, readFile } from 'node:fs/promises';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
|
-
import { AGENT_CORE_VERSION, HostAgentRuntime, ModelRuntime, SessionManager,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { AGENT_CORE_VERSION, HostAgentRuntime, ModelRuntime, SessionManager, createAgentCoreSessionRuntimeFactory, createAgentSessionRuntime, } from '@felan-ai/agent-core';
|
|
5
|
+
import { bindSubagentSession } from '@felan-ai/ext-subagents';
|
|
6
|
+
import { resolveModelScopeWithDiagnostics, } from '@earendil-works/pi-coding-agent';
|
|
7
|
+
import { createLocalExtensionImporter, importLocalExtension, localExtensionPackages, } from './extensions.js';
|
|
7
8
|
import { createLocalSettingsManager } from './settings.js';
|
|
9
|
+
import { LocalSubagentHost, } from './subagents/host.js';
|
|
10
|
+
const localSubagentHost = Symbol('localSubagentHost');
|
|
11
|
+
const localSubagentShutdown = Symbol('localSubagentShutdown');
|
|
8
12
|
export function getLocalAgentDir() {
|
|
9
13
|
return resolve(process.env.FELAN_AGENT_DIR ?? join(homedir(), '.felan', 'agent'));
|
|
10
14
|
}
|
|
11
15
|
export function createLocalSessionRuntimeFactory(options) {
|
|
12
|
-
const
|
|
16
|
+
const sessions = new WeakMap();
|
|
17
|
+
const createCoreRuntime = createAgentCoreSessionRuntimeFactory(async ({ cwd, sessionManager }) => {
|
|
13
18
|
const settingsManager = createLocalSettingsManager(cwd, options.agentDir);
|
|
14
19
|
const modelPatterns = settingsManager.getEnabledModels();
|
|
15
20
|
const modelScope = modelPatterns && modelPatterns.length > 0
|
|
16
21
|
? await resolveModelScopeWithDiagnostics(modelPatterns, options.modelRuntime)
|
|
17
22
|
: { scopedModels: [], diagnostics: [] };
|
|
23
|
+
const extensionPackages = options.extensionPackages ?? localExtensionPackages;
|
|
24
|
+
const importExtension = options.importExtension ?? importLocalExtension;
|
|
25
|
+
const host = await LocalSubagentHost.create({
|
|
26
|
+
sessionId: sessionManager.getSessionId(),
|
|
27
|
+
cwd,
|
|
28
|
+
agentDir: options.agentDir,
|
|
29
|
+
modelRuntime: options.modelRuntime,
|
|
30
|
+
settingsManager,
|
|
31
|
+
extensionPackages,
|
|
32
|
+
importExtension,
|
|
33
|
+
...(options.runtimeFactory === undefined ? {} : { runtimeFactory: options.runtimeFactory }),
|
|
34
|
+
...(options.subagentSettings === undefined ? {} : { settings: options.subagentSettings }),
|
|
35
|
+
});
|
|
36
|
+
const shutdownState = { failed: false };
|
|
37
|
+
const shutdownHost = async () => {
|
|
38
|
+
try {
|
|
39
|
+
await host.shutdown();
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
shutdownState.failed = true;
|
|
43
|
+
shutdownState.error = error;
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
sessions.set(sessionManager, { host, modelScope, shutdownState });
|
|
18
48
|
return {
|
|
19
|
-
applicationKind: 'tui',
|
|
20
49
|
runtime: options.runtimeFactory?.(cwd) ?? new HostAgentRuntime(cwd),
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
importExtension: options.importExtension ?? importLocalExtension,
|
|
50
|
+
extensionPackages,
|
|
51
|
+
importExtension: createLocalExtensionImporter(host, importExtension, shutdownHost),
|
|
24
52
|
modelRuntime: options.modelRuntime,
|
|
25
53
|
settingsManager,
|
|
26
54
|
...(modelScope.scopedModels.length === 0 ? {} : { scopedModels: modelScope.scopedModels }),
|
|
@@ -28,11 +56,11 @@ export function createLocalSessionRuntimeFactory(options) {
|
|
|
28
56
|
});
|
|
29
57
|
return async (request) => {
|
|
30
58
|
const result = await createCoreRuntime(request);
|
|
59
|
+
const { host, modelScope, shutdownState } = sessions.get(request.sessionManager);
|
|
60
|
+
bindSubagentSession({ host, session: result.session });
|
|
61
|
+
Object.defineProperty(result.services, localSubagentHost, { value: host });
|
|
62
|
+
Object.defineProperty(result.services, localSubagentShutdown, { value: shutdownState });
|
|
31
63
|
const settingsErrors = result.services.settingsManager.drainErrors();
|
|
32
|
-
const modelPatterns = result.services.settingsManager.getEnabledModels();
|
|
33
|
-
const modelScope = modelPatterns && modelPatterns.length > 0
|
|
34
|
-
? await resolveModelScopeWithDiagnostics(modelPatterns, options.modelRuntime)
|
|
35
|
-
: { diagnostics: [] };
|
|
36
64
|
return {
|
|
37
65
|
...result,
|
|
38
66
|
diagnostics: [
|
|
@@ -47,114 +75,6 @@ export function createLocalSessionRuntimeFactory(options) {
|
|
|
47
75
|
};
|
|
48
76
|
};
|
|
49
77
|
}
|
|
50
|
-
export function createLocalSessionHost(options, cwd) {
|
|
51
|
-
return {
|
|
52
|
-
createChildSession: async (request) => {
|
|
53
|
-
const sessionManager = SessionManager.inMemory(cwd);
|
|
54
|
-
const childSessionId = sessionManager.getSessionId();
|
|
55
|
-
const resolvedModel = request.model
|
|
56
|
-
? resolveCliModel({ cliModel: request.model, modelRuntime: options.modelRuntime })
|
|
57
|
-
: undefined;
|
|
58
|
-
if (resolvedModel?.error) {
|
|
59
|
-
return {
|
|
60
|
-
ok: false,
|
|
61
|
-
sessionId: childSessionId,
|
|
62
|
-
status: 'failed',
|
|
63
|
-
error: resolvedModel.error,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
const created = await createAgentCoreSession({
|
|
67
|
-
applicationKind: 'tui',
|
|
68
|
-
runtime: options.runtimeFactory?.(cwd) ?? new HostAgentRuntime(cwd),
|
|
69
|
-
host: createLocalSessionHost(options, cwd),
|
|
70
|
-
extensionPackages: options.extensionPackages ?? localExtensionPackages,
|
|
71
|
-
importExtension: options.importExtension ?? importLocalExtension,
|
|
72
|
-
modelRuntime: options.modelRuntime,
|
|
73
|
-
settingsManager: createLocalSettingsManager(cwd, options.agentDir),
|
|
74
|
-
sessionManager,
|
|
75
|
-
appendSystemPrompt: [`You are the ${request.personaId} child agent.`],
|
|
76
|
-
...(resolvedModel?.model === undefined ? {} : { model: resolvedModel.model }),
|
|
77
|
-
...(resolvedModel?.thinkingLevel === undefined
|
|
78
|
-
? {}
|
|
79
|
-
: { thinkingLevel: resolvedModel.thinkingLevel }),
|
|
80
|
-
});
|
|
81
|
-
try {
|
|
82
|
-
await created.session.bindExtensions({ mode: 'print' });
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
created.session.dispose();
|
|
86
|
-
throw error;
|
|
87
|
-
}
|
|
88
|
-
const runChild = async () => {
|
|
89
|
-
let timeout;
|
|
90
|
-
if (request.timeoutMinutes) {
|
|
91
|
-
timeout = setTimeout(() => void created.session.abort(), request.timeoutMinutes * 60_000);
|
|
92
|
-
timeout.unref();
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
await created.session.prompt(request.prompt);
|
|
96
|
-
let assistant;
|
|
97
|
-
for (let index = created.session.messages.length - 1; index >= 0; index -= 1) {
|
|
98
|
-
const message = created.session.messages[index];
|
|
99
|
-
if (message?.role === 'assistant') {
|
|
100
|
-
assistant = message;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (!assistant) {
|
|
105
|
-
return {
|
|
106
|
-
ok: false,
|
|
107
|
-
sessionId: childSessionId,
|
|
108
|
-
status: 'failed',
|
|
109
|
-
error: 'Child session completed without an assistant response',
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
if (assistant.stopReason === 'error' || assistant.stopReason === 'aborted') {
|
|
113
|
-
return {
|
|
114
|
-
ok: false,
|
|
115
|
-
sessionId: childSessionId,
|
|
116
|
-
status: 'failed',
|
|
117
|
-
error: assistant.errorMessage ?? `Child session ${assistant.stopReason}`,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
const result = assistant.content
|
|
121
|
-
.filter((part) => part.type === 'text')
|
|
122
|
-
.map((part) => part.text)
|
|
123
|
-
.join('\n');
|
|
124
|
-
return {
|
|
125
|
-
ok: true,
|
|
126
|
-
sessionId: childSessionId,
|
|
127
|
-
status: 'completed',
|
|
128
|
-
result,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
return {
|
|
133
|
-
ok: false,
|
|
134
|
-
sessionId: childSessionId,
|
|
135
|
-
status: 'failed',
|
|
136
|
-
error: error instanceof Error ? error.message : String(error),
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
finally {
|
|
140
|
-
if (timeout)
|
|
141
|
-
clearTimeout(timeout);
|
|
142
|
-
created.session.dispose();
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
if (!request.block) {
|
|
146
|
-
void runChild();
|
|
147
|
-
return {
|
|
148
|
-
ok: true,
|
|
149
|
-
sessionId: childSessionId,
|
|
150
|
-
status: 'running',
|
|
151
|
-
message: 'Child session started',
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
return runChild();
|
|
155
|
-
},
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
78
|
export async function createLocalModelRuntime(agentDir) {
|
|
159
79
|
return ModelRuntime.create({
|
|
160
80
|
authPath: join(agentDir, 'auth.json'),
|
|
@@ -175,12 +95,123 @@ export async function createLocalFelanRuntime(options = {}) {
|
|
|
175
95
|
const createRuntime = createLocalSessionRuntimeFactory({
|
|
176
96
|
agentDir,
|
|
177
97
|
modelRuntime,
|
|
98
|
+
subagentSettings: options.subagentSettings ?? await loadLocalSubagentSettings(agentDir),
|
|
178
99
|
...(options.runtimeFactory === undefined ? {} : { runtimeFactory: options.runtimeFactory }),
|
|
179
100
|
});
|
|
180
|
-
|
|
101
|
+
const runtime = await createAgentSessionRuntime(createRuntime, {
|
|
181
102
|
cwd: sessionManager.getCwd(),
|
|
182
103
|
agentDir,
|
|
183
104
|
sessionManager,
|
|
184
105
|
});
|
|
106
|
+
return installLocalSubagentLifecycle(runtime);
|
|
107
|
+
}
|
|
108
|
+
function getRuntimeLocalSubagentHost(runtime) {
|
|
109
|
+
const host = runtime.services[localSubagentHost];
|
|
110
|
+
if (!host)
|
|
111
|
+
throw new Error('Local subagent host is unavailable');
|
|
112
|
+
return host;
|
|
113
|
+
}
|
|
114
|
+
function getRuntimeLocalSubagentShutdown(runtime) {
|
|
115
|
+
const state = runtime.services[localSubagentShutdown];
|
|
116
|
+
if (!state)
|
|
117
|
+
throw new Error('Local subagent shutdown state is unavailable');
|
|
118
|
+
return state;
|
|
119
|
+
}
|
|
120
|
+
function installLocalSubagentLifecycle(runtime) {
|
|
121
|
+
const listeners = new Set();
|
|
122
|
+
const localRuntime = runtime;
|
|
123
|
+
Object.defineProperties(localRuntime, {
|
|
124
|
+
localSubagentHost: { get: () => getRuntimeLocalSubagentHost(runtime) },
|
|
125
|
+
subscribeLocalSubagentHost: {
|
|
126
|
+
value: (listener) => {
|
|
127
|
+
listeners.add(listener);
|
|
128
|
+
return () => listeners.delete(listener);
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
const notifyHostReplacement = () => {
|
|
133
|
+
const host = localRuntime.localSubagentHost;
|
|
134
|
+
for (const listener of listeners)
|
|
135
|
+
listener(host);
|
|
136
|
+
};
|
|
137
|
+
const dispose = runtime.dispose.bind(runtime);
|
|
138
|
+
runtime.dispose = async () => {
|
|
139
|
+
const shutdownState = getRuntimeLocalSubagentShutdown(runtime);
|
|
140
|
+
const session = runtime.session;
|
|
141
|
+
const sessionDispose = session.dispose;
|
|
142
|
+
let piDisposalStarted = false;
|
|
143
|
+
const observedDispose = () => {
|
|
144
|
+
piDisposalStarted = true;
|
|
145
|
+
sessionDispose.call(session);
|
|
146
|
+
};
|
|
147
|
+
session.dispose = observedDispose;
|
|
148
|
+
let disposeFailed = false;
|
|
149
|
+
let disposeError;
|
|
150
|
+
try {
|
|
151
|
+
await dispose();
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
disposeFailed = true;
|
|
155
|
+
disposeError = error;
|
|
156
|
+
if (!piDisposalStarted) {
|
|
157
|
+
try {
|
|
158
|
+
observedDispose();
|
|
159
|
+
}
|
|
160
|
+
catch (fallbackError) {
|
|
161
|
+
throw new AggregateError([error, fallbackError], 'Local runtime shutdown and Pi disposal both failed');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
if (session.dispose === observedDispose)
|
|
167
|
+
session.dispose = sessionDispose;
|
|
168
|
+
}
|
|
169
|
+
if (disposeFailed)
|
|
170
|
+
throw disposeError;
|
|
171
|
+
if (shutdownState.failed)
|
|
172
|
+
throw shutdownState.error;
|
|
173
|
+
};
|
|
174
|
+
const switchSession = runtime.switchSession.bind(runtime);
|
|
175
|
+
runtime.switchSession = async (...args) => {
|
|
176
|
+
const result = await switchSession(...args);
|
|
177
|
+
if (!result.cancelled)
|
|
178
|
+
notifyHostReplacement();
|
|
179
|
+
return result;
|
|
180
|
+
};
|
|
181
|
+
const newSession = runtime.newSession.bind(runtime);
|
|
182
|
+
runtime.newSession = async (...args) => {
|
|
183
|
+
const result = await newSession(...args);
|
|
184
|
+
if (!result.cancelled)
|
|
185
|
+
notifyHostReplacement();
|
|
186
|
+
return result;
|
|
187
|
+
};
|
|
188
|
+
const fork = runtime.fork.bind(runtime);
|
|
189
|
+
runtime.fork = async (...args) => {
|
|
190
|
+
const result = await fork(...args);
|
|
191
|
+
if (!result.cancelled)
|
|
192
|
+
notifyHostReplacement();
|
|
193
|
+
return result;
|
|
194
|
+
};
|
|
195
|
+
const importFromJsonl = runtime.importFromJsonl.bind(runtime);
|
|
196
|
+
runtime.importFromJsonl = async (...args) => {
|
|
197
|
+
const result = await importFromJsonl(...args);
|
|
198
|
+
if (!result.cancelled)
|
|
199
|
+
notifyHostReplacement();
|
|
200
|
+
return result;
|
|
201
|
+
};
|
|
202
|
+
return localRuntime;
|
|
203
|
+
}
|
|
204
|
+
async function loadLocalSubagentSettings(agentDir) {
|
|
205
|
+
try {
|
|
206
|
+
const settings = JSON.parse(await readFile(join(agentDir, 'settings.json'), 'utf8'));
|
|
207
|
+
return settings.felanSubagents ?? {};
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
if (error instanceof Error && 'code' in error && error.code === 'ENOENT')
|
|
211
|
+
return {};
|
|
212
|
+
if (error instanceof SyntaxError)
|
|
213
|
+
return {};
|
|
214
|
+
throw error;
|
|
215
|
+
}
|
|
185
216
|
}
|
|
186
217
|
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|