@callsitehq/cli 0.1.0 → 0.2.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Callsite contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # @callsitehq/cli
2
+
3
+ Command-line interface for Callsite.
4
+
5
+ The package installs the `callsite` binary for generating agent-facing artifacts
6
+ from a Callsite config. The current build command emits `mcp.json`,
7
+ and `openapi.json`.
8
+
9
+ ```sh
10
+ callsite build
11
+ ```
12
+
13
+ Host applications run capabilities by importing their config and composing it
14
+ with `@callsitehq/runtime` and any host-specific adapter.
15
+
16
+ By default the CLI looks for `callsite.config.ts`, then the JavaScript config
17
+ variants. Zod-backed projects can use `@callsitehq/zod`:
18
+
19
+ ```ts
20
+ import { defineConfig } from "@callsitehq/zod";
21
+
22
+ import { capabilities } from "./src/capabilities.js";
23
+
24
+ export default defineConfig({ capabilities });
25
+ ```
26
+
27
+ ## Status
28
+
29
+ Early `0.x` package. CLI commands and config shape may change while the library
30
+ surface is finalized.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,20 @@
1
+ import { AnyCapability, ToJsonSchema } from '@callsitehq/core';
2
+ import { EmitMcpJsonOptions, EmitOpenApiOptions } from '@callsitehq/emit';
3
+
1
4
  interface BuildOptions {
2
- readonly configPath: string;
3
- readonly outDir: string;
5
+ readonly configPath?: string | undefined;
6
+ readonly outDir?: string | undefined;
7
+ }
8
+ interface CallsiteConfig {
9
+ readonly capabilities: readonly AnyCapability[];
10
+ readonly toJsonSchema: ToJsonSchema;
11
+ readonly emit?: CallsiteEmitConfig;
12
+ }
13
+ interface CallsiteEmitConfig {
14
+ readonly mcp?: EmitMcpJsonOptions;
15
+ readonly openapi?: EmitOpenApiOptions;
4
16
  }
5
17
  declare function build(options: BuildOptions): Promise<void>;
6
18
  declare function main(argv?: readonly string[]): Promise<number>;
7
19
 
8
- export { type BuildOptions, build, main };
20
+ export { type BuildOptions, type CallsiteConfig, type CallsiteEmitConfig, build, main };
package/dist/index.js CHANGED
@@ -1,41 +1,86 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/index.ts
4
- import { mkdir, writeFile } from "fs/promises";
4
+ import { realpathSync } from "fs";
5
+ import { access, mkdir, unlink, writeFile } from "fs/promises";
5
6
  import { dirname, resolve } from "path";
6
- import { fileURLToPath, pathToFileURL } from "url";
7
+ import { fileURLToPath } from "url";
8
+ import { createJiti } from "jiti";
9
+ import { toIR } from "@callsitehq/core";
7
10
  import {
8
- emitChatGptAppConfig,
9
- emitClaudeConnectorConfig,
10
11
  emitMcpJson,
11
12
  emitOpenApi
12
13
  } from "@callsitehq/emit";
14
+ var OBSOLETE_ARTIFACTS = ["handler.ts"];
13
15
  async function build(options) {
14
- const configUrl = pathToFileURL(resolve(options.configPath));
15
- const configModule = await import(configUrl.href);
16
- const ir = readIR(configModule.default ?? configModule.ir);
17
- const outDir = resolve(options.outDir);
18
- await writeArtifact(resolve(outDir, "mcp.json"), emitMcpJson(ir));
19
- await writeArtifact(resolve(outDir, "openapi.json"), emitOpenApi(ir));
20
- await writeArtifact(resolve(outDir, "chatgpt-app.json"), emitChatGptAppConfig(ir));
21
- await writeArtifact(resolve(outDir, "claude-connector.json"), emitClaudeConnectorConfig(ir));
16
+ const configPath = await resolveConfigPath(options.configPath);
17
+ const config = readConfig(await loadConfig(configPath));
18
+ const ir = configToIR(config);
19
+ const emit = isCallsiteConfig(config) ? config.emit : void 0;
20
+ const outDir = resolve(options.outDir ?? "dist/callsite");
21
+ await removeObsoleteArtifacts(outDir);
22
+ await writeArtifact(resolve(outDir, "mcp.json"), emitMcpJson(ir, emit?.mcp));
23
+ await writeArtifact(resolve(outDir, "openapi.json"), emitOpenApi(ir, emit?.openapi));
22
24
  }
23
25
  async function main(argv = process.argv.slice(2)) {
24
26
  const [command, ...args] = argv;
25
- if (command !== "build") {
27
+ if (command === void 0 || command === "--help" || command === "-h") {
26
28
  printHelp();
27
- return command === void 0 || command === "--help" || command === "-h" ? 0 : 1;
29
+ return 0;
28
30
  }
29
- const configPath = readFlag(args, "--config") ?? "callsite.config.js";
30
- const outDir = readFlag(args, "--out") ?? "dist/callsite";
31
- await build({ configPath, outDir });
32
- return 0;
31
+ if (command === "build") {
32
+ const configPath = readFlag(args, "--config");
33
+ const outDir = readFlag(args, "--out");
34
+ await build({ configPath, outDir });
35
+ return 0;
36
+ }
37
+ printHelp();
38
+ return 1;
39
+ }
40
+ var DEFAULT_CONFIG_FILES = [
41
+ "callsite.config.ts",
42
+ "callsite.config.mts",
43
+ "callsite.config.js",
44
+ "callsite.config.mjs",
45
+ "callsite.config.cjs"
46
+ ];
47
+ async function resolveConfigPath(configPath) {
48
+ if (configPath !== void 0) {
49
+ return resolve(configPath);
50
+ }
51
+ for (const candidate of DEFAULT_CONFIG_FILES) {
52
+ const path = resolve(candidate);
53
+ try {
54
+ await access(path);
55
+ return path;
56
+ } catch {
57
+ }
58
+ }
59
+ throw new TypeError(
60
+ `No Callsite config found. Create ${DEFAULT_CONFIG_FILES[0]} or pass --config.`
61
+ );
62
+ }
63
+ async function loadConfig(configPath) {
64
+ const jiti = createJiti(import.meta.url, { fsCache: false });
65
+ const configModule = await jiti.import(configPath);
66
+ return configModule.default ?? configModule.config ?? configModule.ir;
33
67
  }
34
- function readIR(value) {
35
- if (typeof value !== "object" || value === null || !("version" in value) || value.version !== 1 || !("capabilities" in value) || !Array.isArray(value.capabilities)) {
36
- throw new TypeError("Callsite config must export a CapabilityIR object.");
68
+ function readConfig(value) {
69
+ if (isIR(value) || isCallsiteConfig(value)) {
70
+ return value;
37
71
  }
38
- return value;
72
+ throw new TypeError(
73
+ "Callsite config must export an IR object or { capabilities, toJsonSchema }."
74
+ );
75
+ }
76
+ function configToIR(config) {
77
+ return isIR(config) ? config : toIR(config.capabilities, config.toJsonSchema);
78
+ }
79
+ function isCallsiteConfig(value) {
80
+ return typeof value === "object" && value !== null && "capabilities" in value && Array.isArray(value.capabilities) && "toJsonSchema" in value && typeof value.toJsonSchema === "function";
81
+ }
82
+ function isIR(value) {
83
+ return typeof value === "object" && value !== null && "version" in value && value.version === 1 && "capabilities" in value && Array.isArray(value.capabilities);
39
84
  }
40
85
  function readFlag(args, name) {
41
86
  const index = args.indexOf(name);
@@ -48,14 +93,30 @@ async function writeArtifact(path, content) {
48
93
  await mkdir(dirname(path), { recursive: true });
49
94
  await writeFile(path, content);
50
95
  }
96
+ async function removeObsoleteArtifacts(outDir) {
97
+ await Promise.all(
98
+ OBSOLETE_ARTIFACTS.map(async (artifact) => {
99
+ try {
100
+ await unlink(resolve(outDir, artifact));
101
+ } catch (error) {
102
+ if (!isNodeError(error) || error.code !== "ENOENT") {
103
+ throw error;
104
+ }
105
+ }
106
+ })
107
+ );
108
+ }
109
+ function isNodeError(error) {
110
+ return error instanceof Error && "code" in error;
111
+ }
51
112
  function printHelp() {
52
113
  process.stdout.write(`callsite
53
114
 
54
115
  Usage:
55
- callsite build [--config callsite.config.js] [--out dist/callsite]
116
+ callsite build [--config callsite.config.ts] [--out dist/callsite]
56
117
  `);
57
118
  }
58
- var isDirectRun = process.argv[1] === fileURLToPath(import.meta.url);
119
+ var isDirectRun = process.argv[1] !== void 0 && realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url));
59
120
  if (isDirectRun) {
60
121
  main().then(
61
122
  (exitCode) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, resolve } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\nimport {\n emitChatGptAppConfig,\n emitClaudeConnectorConfig,\n emitMcpJson,\n emitOpenApi\n} from \"@callsitehq/emit\";\n\nimport type { CapabilityIR } from \"@callsitehq/core\";\n\nexport interface BuildOptions {\n readonly configPath: string;\n readonly outDir: string;\n}\n\nexport async function build(options: BuildOptions): Promise<void> {\n const configUrl = pathToFileURL(resolve(options.configPath));\n const configModule = (await import(configUrl.href)) as { default?: unknown; ir?: unknown };\n const ir = readIR(configModule.default ?? configModule.ir);\n const outDir = resolve(options.outDir);\n\n await writeArtifact(resolve(outDir, \"mcp.json\"), emitMcpJson(ir));\n await writeArtifact(resolve(outDir, \"openapi.json\"), emitOpenApi(ir));\n await writeArtifact(resolve(outDir, \"chatgpt-app.json\"), emitChatGptAppConfig(ir));\n await writeArtifact(resolve(outDir, \"claude-connector.json\"), emitClaudeConnectorConfig(ir));\n}\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const [command, ...args] = argv;\n\n if (command !== \"build\") {\n printHelp();\n return command === undefined || command === \"--help\" || command === \"-h\" ? 0 : 1;\n }\n\n const configPath = readFlag(args, \"--config\") ?? \"callsite.config.js\";\n const outDir = readFlag(args, \"--out\") ?? \"dist/callsite\";\n\n await build({ configPath, outDir });\n return 0;\n}\n\nfunction readIR(value: unknown): CapabilityIR {\n if (\n typeof value !== \"object\" ||\n value === null ||\n !(\"version\" in value) ||\n value.version !== 1 ||\n !(\"capabilities\" in value) ||\n !Array.isArray(value.capabilities)\n ) {\n throw new TypeError(\"Callsite config must export a CapabilityIR object.\");\n }\n\n return value as CapabilityIR;\n}\n\nfunction readFlag(args: readonly string[], name: string): string | undefined {\n const index = args.indexOf(name);\n\n if (index === -1) {\n return undefined;\n }\n\n return args[index + 1];\n}\n\nasync function writeArtifact(path: string, content: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, content);\n}\n\nfunction printHelp(): void {\n process.stdout.write(`callsite\n\nUsage:\n callsite build [--config callsite.config.js] [--out dist/callsite]\n`);\n}\n\nconst isDirectRun = process.argv[1] === fileURLToPath(import.meta.url);\n\nif (isDirectRun) {\n main().then(\n (exitCode) => {\n process.exitCode = exitCode;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n }\n );\n}\n"],"mappings":";;;AAAA,SAAS,OAAO,iBAAiB;AACjC,SAAS,SAAS,eAAe;AACjC,SAAS,eAAe,qBAAqB;AAE7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP,eAAsB,MAAM,SAAsC;AAChE,QAAM,YAAY,cAAc,QAAQ,QAAQ,UAAU,CAAC;AAC3D,QAAM,eAAgB,MAAM,OAAO,UAAU;AAC7C,QAAM,KAAK,OAAO,aAAa,WAAW,aAAa,EAAE;AACzD,QAAM,SAAS,QAAQ,QAAQ,MAAM;AAErC,QAAM,cAAc,QAAQ,QAAQ,UAAU,GAAG,YAAY,EAAE,CAAC;AAChE,QAAM,cAAc,QAAQ,QAAQ,cAAc,GAAG,YAAY,EAAE,CAAC;AACpE,QAAM,cAAc,QAAQ,QAAQ,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;AACjF,QAAM,cAAc,QAAQ,QAAQ,uBAAuB,GAAG,0BAA0B,EAAE,CAAC;AAC7F;AAEA,eAAsB,KAAK,OAA0B,QAAQ,KAAK,MAAM,CAAC,GAAoB;AAC3F,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI;AAE3B,MAAI,YAAY,SAAS;AACvB,cAAU;AACV,WAAO,YAAY,UAAa,YAAY,YAAY,YAAY,OAAO,IAAI;AAAA,EACjF;AAEA,QAAM,aAAa,SAAS,MAAM,UAAU,KAAK;AACjD,QAAM,SAAS,SAAS,MAAM,OAAO,KAAK;AAE1C,QAAM,MAAM,EAAE,YAAY,OAAO,CAAC;AAClC,SAAO;AACT;AAEA,SAAS,OAAO,OAA8B;AAC5C,MACE,OAAO,UAAU,YACjB,UAAU,QACV,EAAE,aAAa,UACf,MAAM,YAAY,KAClB,EAAE,kBAAkB,UACpB,CAAC,MAAM,QAAQ,MAAM,YAAY,GACjC;AACA,UAAM,IAAI,UAAU,oDAAoD;AAAA,EAC1E;AAEA,SAAO;AACT;AAEA,SAAS,SAAS,MAAyB,MAAkC;AAC3E,QAAM,QAAQ,KAAK,QAAQ,IAAI;AAE/B,MAAI,UAAU,IAAI;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,QAAQ,CAAC;AACvB;AAEA,eAAe,cAAc,MAAc,SAAgC;AACzE,QAAM,MAAM,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAC9C,QAAM,UAAU,MAAM,OAAO;AAC/B;AAEA,SAAS,YAAkB;AACzB,UAAQ,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA,CAItB;AACD;AAEA,IAAM,cAAc,QAAQ,KAAK,CAAC,MAAM,cAAc,YAAY,GAAG;AAErE,IAAI,aAAa;AACf,OAAK,EAAE;AAAA,IACL,CAAC,aAAa;AACZ,cAAQ,WAAW;AAAA,IACrB;AAAA,IACA,CAAC,UAAmB;AAClB,cAAQ,OAAO,MAAM,GAAG,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,CAAI;AAClF,cAAQ,WAAW;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { realpathSync } from \"node:fs\";\nimport { access, mkdir, unlink, writeFile } from \"node:fs/promises\";\nimport { dirname, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { createJiti } from \"jiti\";\n\nimport { toIR, type AnyCapability, type IR, type ToJsonSchema } from \"@callsitehq/core\";\nimport {\n emitMcpJson,\n emitOpenApi,\n type EmitMcpJsonOptions,\n type EmitOpenApiOptions\n} from \"@callsitehq/emit\";\n\nexport interface BuildOptions {\n readonly configPath?: string | undefined;\n readonly outDir?: string | undefined;\n}\n\nexport interface CallsiteConfig {\n readonly capabilities: readonly AnyCapability[];\n readonly toJsonSchema: ToJsonSchema;\n readonly emit?: CallsiteEmitConfig;\n}\n\nexport interface CallsiteEmitConfig {\n readonly mcp?: EmitMcpJsonOptions;\n readonly openapi?: EmitOpenApiOptions;\n}\n\nconst OBSOLETE_ARTIFACTS = [\"handler.ts\"] as const;\n\nexport async function build(options: BuildOptions): Promise<void> {\n const configPath = await resolveConfigPath(options.configPath);\n const config = readConfig(await loadConfig(configPath));\n const ir = configToIR(config);\n const emit = isCallsiteConfig(config) ? config.emit : undefined;\n const outDir = resolve(options.outDir ?? \"dist/callsite\");\n\n await removeObsoleteArtifacts(outDir);\n await writeArtifact(resolve(outDir, \"mcp.json\"), emitMcpJson(ir, emit?.mcp));\n await writeArtifact(resolve(outDir, \"openapi.json\"), emitOpenApi(ir, emit?.openapi));\n}\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const [command, ...args] = argv;\n\n if (command === undefined || command === \"--help\" || command === \"-h\") {\n printHelp();\n return 0;\n }\n\n if (command === \"build\") {\n const configPath = readFlag(args, \"--config\");\n const outDir = readFlag(args, \"--out\");\n\n await build({ configPath, outDir });\n return 0;\n }\n\n printHelp();\n return 1;\n}\n\nconst DEFAULT_CONFIG_FILES = [\n \"callsite.config.ts\",\n \"callsite.config.mts\",\n \"callsite.config.js\",\n \"callsite.config.mjs\",\n \"callsite.config.cjs\"\n];\n\nasync function resolveConfigPath(configPath: string | undefined): Promise<string> {\n if (configPath !== undefined) {\n return resolve(configPath);\n }\n\n for (const candidate of DEFAULT_CONFIG_FILES) {\n const path = resolve(candidate);\n\n try {\n await access(path);\n return path;\n } catch {\n // Keep looking through the default config names.\n }\n }\n\n throw new TypeError(\n `No Callsite config found. Create ${DEFAULT_CONFIG_FILES[0]} or pass --config.`\n );\n}\n\nasync function loadConfig(configPath: string): Promise<unknown> {\n const jiti = createJiti(import.meta.url, { fsCache: false });\n const configModule = (await jiti.import(configPath)) as {\n readonly default?: unknown;\n readonly config?: unknown;\n readonly ir?: unknown;\n };\n\n return configModule.default ?? configModule.config ?? configModule.ir;\n}\n\nfunction readConfig(value: unknown): IR | CallsiteConfig {\n if (isIR(value) || isCallsiteConfig(value)) {\n return value;\n }\n\n throw new TypeError(\n \"Callsite config must export an IR object or { capabilities, toJsonSchema }.\"\n );\n}\n\nfunction configToIR(config: IR | CallsiteConfig): IR {\n return isIR(config) ? config : toIR(config.capabilities, config.toJsonSchema);\n}\n\nfunction isCallsiteConfig(value: unknown): value is CallsiteConfig {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"capabilities\" in value &&\n Array.isArray(value.capabilities) &&\n \"toJsonSchema\" in value &&\n typeof value.toJsonSchema === \"function\"\n );\n}\n\nfunction isIR(value: unknown): value is IR {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"version\" in value &&\n value.version === 1 &&\n \"capabilities\" in value &&\n Array.isArray(value.capabilities)\n );\n}\n\nfunction readFlag(args: readonly string[], name: string): string | undefined {\n const index = args.indexOf(name);\n\n if (index === -1) {\n return undefined;\n }\n\n return args[index + 1];\n}\n\nasync function writeArtifact(path: string, content: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, content);\n}\n\nasync function removeObsoleteArtifacts(outDir: string): Promise<void> {\n await Promise.all(\n OBSOLETE_ARTIFACTS.map(async (artifact) => {\n try {\n await unlink(resolve(outDir, artifact));\n } catch (error) {\n if (!isNodeError(error) || error.code !== \"ENOENT\") {\n throw error;\n }\n }\n })\n );\n}\n\nfunction isNodeError(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && \"code\" in error;\n}\n\nfunction printHelp(): void {\n process.stdout.write(`callsite\n\nUsage:\n callsite build [--config callsite.config.ts] [--out dist/callsite]\n`);\n}\n\nconst isDirectRun =\n process.argv[1] !== undefined &&\n realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url));\n\nif (isDirectRun) {\n main().then(\n (exitCode) => {\n process.exitCode = exitCode;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n }\n );\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,7 +1,25 @@
1
1
  {
2
2
  "name": "@callsitehq/cli",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Command-line tools for building Callsite generated artifacts.",
5
+ "keywords": [
6
+ "agents",
7
+ "capabilities",
8
+ "cli",
9
+ "mcp",
10
+ "openapi",
11
+ "typescript"
12
+ ],
13
+ "license": "MIT",
14
+ "homepage": "https://github.com/callsitehq/callsite/tree/main/packages/cli#readme",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/callsitehq/callsite.git",
18
+ "directory": "packages/cli"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/callsitehq/callsite/issues"
22
+ },
5
23
  "type": "module",
6
24
  "bin": {
7
25
  "callsite": "./dist/index.js"
@@ -15,9 +33,13 @@
15
33
  "files": [
16
34
  "dist"
17
35
  ],
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
18
39
  "dependencies": {
19
- "@callsitehq/core": "0.1.0",
20
- "@callsitehq/emit": "0.1.0"
40
+ "jiti": "^2.7.0",
41
+ "@callsitehq/core": "0.2.0",
42
+ "@callsitehq/emit": "0.2.0"
21
43
  },
22
44
  "scripts": {
23
45
  "build": "tsup",