terse-cli 0.9.20 → 0.9.22

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.
Files changed (128) hide show
  1. package/README.md +1 -1
  2. package/dist/cliUi.d.ts +3 -1
  3. package/dist/cliUi.d.ts.map +1 -1
  4. package/dist/cliUi.js +3 -2
  5. package/dist/cliUi.js.map +1 -1
  6. package/dist/commands/actor.d.ts.map +1 -1
  7. package/dist/commands/actor.js +32 -5
  8. package/dist/commands/actor.js.map +1 -1
  9. package/dist/commands/attach.d.ts +0 -7
  10. package/dist/commands/attach.d.ts.map +1 -1
  11. package/dist/commands/attach.js +220 -189
  12. package/dist/commands/attach.js.map +1 -1
  13. package/dist/commands/deploy.d.ts.map +1 -1
  14. package/dist/commands/deploy.js +15 -3
  15. package/dist/commands/deploy.js.map +1 -1
  16. package/dist/commands/generate.d.ts +0 -4
  17. package/dist/commands/generate.d.ts.map +1 -1
  18. package/dist/commands/generate.js +161 -127
  19. package/dist/commands/generate.js.map +1 -1
  20. package/dist/commands/history.d.ts +0 -15
  21. package/dist/commands/history.d.ts.map +1 -1
  22. package/dist/commands/history.js +139 -105
  23. package/dist/commands/history.js.map +1 -1
  24. package/dist/commands/init.d.ts +1 -0
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +86 -28
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/install.d.ts.map +1 -1
  29. package/dist/commands/install.js +6 -4
  30. package/dist/commands/install.js.map +1 -1
  31. package/dist/commands/integrate.d.ts +0 -48
  32. package/dist/commands/integrate.d.ts.map +1 -1
  33. package/dist/commands/integrate.js +897 -699
  34. package/dist/commands/integrate.js.map +1 -1
  35. package/dist/commands/integrateUse.d.ts +0 -12
  36. package/dist/commands/integrateUse.d.ts.map +1 -1
  37. package/dist/commands/integrateUse.js +132 -98
  38. package/dist/commands/integrateUse.js.map +1 -1
  39. package/dist/commands/listen.d.ts +0 -7
  40. package/dist/commands/listen.d.ts.map +1 -1
  41. package/dist/commands/listen.js +98 -81
  42. package/dist/commands/listen.js.map +1 -1
  43. package/dist/commands/memory.d.ts +0 -21
  44. package/dist/commands/memory.d.ts.map +1 -1
  45. package/dist/commands/memory.js +147 -128
  46. package/dist/commands/memory.js.map +1 -1
  47. package/dist/commands/replay.d.ts +0 -2
  48. package/dist/commands/replay.d.ts.map +1 -1
  49. package/dist/commands/replay.js +37 -28
  50. package/dist/commands/replay.js.map +1 -1
  51. package/dist/commands/resume.d.ts +0 -4
  52. package/dist/commands/resume.d.ts.map +1 -1
  53. package/dist/commands/resume.js +34 -28
  54. package/dist/commands/resume.js.map +1 -1
  55. package/dist/commands/run.d.ts +0 -2
  56. package/dist/commands/run.d.ts.map +1 -1
  57. package/dist/commands/run.js +78 -70
  58. package/dist/commands/run.js.map +1 -1
  59. package/dist/commands/state.d.ts +0 -18
  60. package/dist/commands/state.d.ts.map +1 -1
  61. package/dist/commands/state.js +129 -108
  62. package/dist/commands/state.js.map +1 -1
  63. package/dist/commands/test.d.ts +0 -28
  64. package/dist/commands/test.d.ts.map +1 -1
  65. package/dist/commands/test.js +509 -403
  66. package/dist/commands/test.js.map +1 -1
  67. package/dist/commands/toolRun.d.ts +0 -6
  68. package/dist/commands/toolRun.d.ts.map +1 -1
  69. package/dist/commands/toolRun.js +149 -134
  70. package/dist/commands/toolRun.js.map +1 -1
  71. package/dist/index.js +2 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/integrationApi.d.ts +0 -15
  74. package/dist/integrationApi.d.ts.map +1 -1
  75. package/dist/integrationApi.js +75 -49
  76. package/dist/integrationApi.js.map +1 -1
  77. package/dist/loadJob.d.ts +0 -11
  78. package/dist/loadJob.d.ts.map +1 -1
  79. package/dist/loadJob.js +54 -46
  80. package/dist/loadJob.js.map +1 -1
  81. package/dist/providers/LanguageProvider.d.ts +0 -29
  82. package/dist/providers/LanguageProvider.d.ts.map +1 -1
  83. package/dist/providers/LanguageProvider.js +3 -0
  84. package/dist/providers/LanguageProvider.js.map +1 -1
  85. package/dist/providers/typescript/TypeScriptProvider.d.ts +0 -24
  86. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  87. package/dist/providers/typescript/TypeScriptProvider.js +115 -121
  88. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  89. package/dist/providers/typescript/runtimes/JobRuntime.d.ts +0 -26
  90. package/dist/providers/typescript/runtimes/JobRuntime.d.ts.map +1 -1
  91. package/dist/providers/typescript/runtimes/JobRuntime.js +51 -18
  92. package/dist/providers/typescript/runtimes/JobRuntime.js.map +1 -1
  93. package/dist/providers/typescript/runtimes/directJobRuntime.d.ts +0 -2
  94. package/dist/providers/typescript/runtimes/directJobRuntime.d.ts.map +1 -1
  95. package/dist/providers/typescript/runtimes/directJobRuntime.js +60 -49
  96. package/dist/providers/typescript/runtimes/directJobRuntime.js.map +1 -1
  97. package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts +0 -2
  98. package/dist/providers/typescript/runtimes/durableJobRuntime.d.ts.map +1 -1
  99. package/dist/providers/typescript/runtimes/durableJobRuntime.js +168 -146
  100. package/dist/providers/typescript/runtimes/durableJobRuntime.js.map +1 -1
  101. package/dist/providers/typescript/runtimes/index.d.ts +0 -3
  102. package/dist/providers/typescript/runtimes/index.d.ts.map +1 -1
  103. package/dist/providers/typescript/runtimes/index.js +5 -2
  104. package/dist/providers/typescript/runtimes/index.js.map +1 -1
  105. package/dist/providers/typescript/runtimes/session.d.ts +0 -4
  106. package/dist/providers/typescript/runtimes/session.d.ts.map +1 -1
  107. package/dist/providers/typescript/runtimes/session.js +78 -64
  108. package/dist/providers/typescript/runtimes/session.js.map +1 -1
  109. package/dist/providers/typescript/terseWorkflow.d.ts +0 -7
  110. package/dist/providers/typescript/terseWorkflow.d.ts.map +1 -1
  111. package/dist/providers/typescript/terseWorkflow.js +12 -7
  112. package/dist/providers/typescript/terseWorkflow.js.map +1 -1
  113. package/dist/runLocalTestJob.d.ts +0 -19
  114. package/dist/runLocalTestJob.d.ts.map +1 -1
  115. package/dist/runLocalTestJob.js +55 -29
  116. package/dist/runLocalTestJob.js.map +1 -1
  117. package/dist/setup.js +1 -1
  118. package/dist/setup.js.map +1 -1
  119. package/dist/sourceArchive.d.ts +1 -1
  120. package/dist/sourceArchive.d.ts.map +1 -1
  121. package/dist/sourceArchive.js +1 -0
  122. package/dist/sourceArchive.js.map +1 -1
  123. package/dist/templates.d.ts +6 -0
  124. package/dist/templates.d.ts.map +1 -0
  125. package/dist/templates.js +78 -0
  126. package/dist/templates.js.map +1 -0
  127. package/package.json +3 -4
  128. package/templates/typescript/init/package.json.hbs +1 -2
@@ -1,8 +1,13 @@
1
- import { __buildJobStateAccessor, createSDKTrigger } from "terse-sdk";
2
- import { runWithJobContext } from "terse-sdk/dist/runIdentity/jobContextStore.js";
3
- export async function shouldRunTerseWorkflow({ job, event, context }) {
4
- const sdkEvent = createSDKTrigger(event);
5
- const state = __buildJobStateAccessor(job.states ?? []);
6
- return runWithJobContext(context, async () => !job.filter || (await job.filter(sdkEvent, state)));
7
- }
1
+ "use strict";
2
+ // LEGACY-JOBS: Commented out while Terse is actors-only. Uncomment to restore; see the note in terse-sdk/src/index.ts.
3
+ // import type { CreateJobParameters, TerseJobContext } from "terse-sdk"
4
+ // import { __buildJobStateAccessor, createSDKTrigger } from "terse-sdk"
5
+ // import { runWithJobContext } from "terse-sdk/dist/runIdentity/jobContextStore.js"
6
+ // import type { SerializedEvent } from "terse-types"
7
+ //
8
+ // export async function shouldRunTerseWorkflow({ job, event, context }: { job: CreateJobParameters; event: SerializedEvent; context: TerseJobContext }): Promise<boolean> {
9
+ // const sdkEvent = createSDKTrigger(event)
10
+ // const state = __buildJobStateAccessor(job.states ?? [])
11
+ // return runWithJobContext(context, async () => !job.filter || (await job.filter(sdkEvent, state)))
12
+ // }
8
13
  //# sourceMappingURL=terseWorkflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terseWorkflow.js","sourceRoot":"","sources":["../../../src/providers/typescript/terseWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AAGjF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAkF;IAChJ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,iBAAiB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;AACrG,CAAC"}
1
+ {"version":3,"file":"terseWorkflow.js","sourceRoot":"","sources":["../../../src/providers/typescript/terseWorkflow.ts"],"names":[],"mappings":";AAAA,uHAAuH;AACvH,wEAAwE;AACxE,wEAAwE;AACxE,oFAAoF;AACpF,qDAAqD;AACrD,EAAE;AACF,4KAA4K;AAC5K,+CAA+C;AAC/C,8DAA8D;AAC9D,wGAAwG;AACxG,IAAI"}
@@ -1,20 +1 @@
1
- import type { CreateJobParameters, SessionStreamEvent } from "terse-sdk";
2
- import type { SerializedEvent } from "terse-types";
3
- import type { LanguageProvider } from "./providers/LanguageProvider.js";
4
- export declare function runLocalTestJob(provider: LanguageProvider, job: CreateJobParameters, event: SerializedEvent, opts: {
5
- projectId: string;
6
- apiKey: string;
7
- forceLocal?: boolean;
8
- isTest?: boolean;
9
- replayOfRunId?: string;
10
- freshState?: boolean;
11
- verbose?: boolean;
12
- entryFile?: string;
13
- pauseUiAround?: <T>(fn: () => Promise<T>) => Promise<T>;
14
- onSessionEvent?: (event: SessionStreamEvent) => void;
15
- }): Promise<{
16
- runId: string;
17
- local: boolean;
18
- }>;
19
- export declare function remoteDispatchNotice(runId: string): string;
20
1
  //# sourceMappingURL=runLocalTestJob.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runLocalTestJob.d.ts","sourceRoot":"","sources":["../src/runLocalTestJob.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE,wBAAsB,eAAe,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE;IACF,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACvD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACvD,GACF,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAyB5C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
1
+ {"version":3,"file":"runLocalTestJob.d.ts","sourceRoot":"","sources":["../src/runLocalTestJob.ts"],"names":[],"mappings":""}
@@ -1,30 +1,56 @@
1
- import { finalizeTestRun, startTestRun } from "./api.js";
2
- import { ensureLocalActors } from "./localActors.js";
3
- export async function runLocalTestJob(provider, job, event, opts) {
4
- const { runId, local } = await startTestRun({ projectId: opts.projectId, jobName: job.name, event, forceLocal: opts.forceLocal, isTest: opts.isTest, replayOfRunId: opts.replayOfRunId, freshState: opts.freshState }, opts.apiKey);
5
- if (!local)
6
- return { runId, local };
7
- let failure = null;
8
- try {
9
- await ensureLocalActors();
10
- await provider.executeJob(job, runId, event, {
11
- verbose: opts.verbose,
12
- entryFile: opts.entryFile,
13
- projectId: opts.projectId,
14
- onSessionEvent: opts.onSessionEvent,
15
- pauseUiAround: opts.pauseUiAround
16
- });
17
- }
18
- catch (error) {
19
- failure = error instanceof Error ? error : new Error(String(error));
20
- throw error;
21
- }
22
- finally {
23
- await finalizeTestRun(runId, failure ? "failed" : "success", opts.apiKey, failure?.message);
24
- }
25
- return { runId, local };
26
- }
27
- export function remoteDispatchNotice(runId) {
28
- return `Dispatched test event to your self-hosted data plane (run ${runId}). Watch it in the dashboard.`;
29
- }
1
+ "use strict";
2
+ // LEGACY-JOBS: Commented out while Terse is actors-only. Uncomment to restore; see the note in terse-sdk/src/index.ts.
3
+ // import type { CreateJobParameters, SessionStreamEvent } from "terse-sdk"
4
+ // import type { SerializedEvent } from "terse-types"
5
+ //
6
+ // import { finalizeTestRun, startTestRun } from "./api.js"
7
+ // import { ensureLocalActors } from "./localActors.js"
8
+ // import type { LanguageProvider } from "./providers/LanguageProvider.js"
9
+ //
10
+ // export async function runLocalTestJob(
11
+ // provider: LanguageProvider,
12
+ // job: CreateJobParameters,
13
+ // event: SerializedEvent,
14
+ // opts: {
15
+ // projectId: string
16
+ // apiKey: string
17
+ // forceLocal?: boolean
18
+ // isTest?: boolean
19
+ // replayOfRunId?: string
20
+ // freshState?: boolean
21
+ // verbose?: boolean
22
+ // entryFile?: string
23
+ // pauseUiAround?: <T>(fn: () => Promise<T>) => Promise<T>
24
+ // onSessionEvent?: (event: SessionStreamEvent) => void
25
+ // }
26
+ // ): Promise<{ runId: string; local: boolean }> {
27
+ // const { runId, local } = await startTestRun(
28
+ // { projectId: opts.projectId, jobName: job.name, event, forceLocal: opts.forceLocal, isTest: opts.isTest, replayOfRunId: opts.replayOfRunId, freshState: opts.freshState },
29
+ // opts.apiKey
30
+ // )
31
+ //
32
+ // if (!local) return { runId, local }
33
+ //
34
+ // let failure: Error | null = null
35
+ // try {
36
+ // await ensureLocalActors()
37
+ // await provider.executeJob(job, runId, event, {
38
+ // verbose: opts.verbose,
39
+ // entryFile: opts.entryFile,
40
+ // projectId: opts.projectId,
41
+ // onSessionEvent: opts.onSessionEvent,
42
+ // pauseUiAround: opts.pauseUiAround
43
+ // })
44
+ // } catch (error) {
45
+ // failure = error instanceof Error ? error : new Error(String(error))
46
+ // throw error
47
+ // } finally {
48
+ // await finalizeTestRun(runId, failure ? "failed" : "success", opts.apiKey, failure?.message)
49
+ // }
50
+ // return { runId, local }
51
+ // }
52
+ //
53
+ // export function remoteDispatchNotice(runId: string): string {
54
+ // return `Dispatched test event to your self-hosted data plane (run ${runId}). Watch it in the dashboard.`
55
+ // }
30
56
  //# sourceMappingURL=runLocalTestJob.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runLocalTestJob.js","sourceRoot":"","sources":["../src/runLocalTestJob.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,QAA0B,EAC1B,GAAwB,EACxB,KAAsB,EACtB,IAWC;IAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CACvC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EACzK,IAAI,CAAC,MAAM,CACd,CAAA;IAED,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IAEnC,IAAI,OAAO,GAAiB,IAAI,CAAA;IAChC,IAAI,CAAC;QACD,MAAM,iBAAiB,EAAE,CAAA;QACzB,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACnE,MAAM,KAAK,CAAA;IACf,CAAC;YAAS,CAAC;QACP,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/F,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAC9C,OAAO,6DAA6D,KAAK,+BAA+B,CAAA;AAC5G,CAAC"}
1
+ {"version":3,"file":"runLocalTestJob.js","sourceRoot":"","sources":["../src/runLocalTestJob.ts"],"names":[],"mappings":";AAAA,uHAAuH;AACvH,2EAA2E;AAC3E,qDAAqD;AACrD,EAAE;AACF,2DAA2D;AAC3D,uDAAuD;AACvD,0EAA0E;AAC1E,EAAE;AACF,yCAAyC;AACzC,kCAAkC;AAClC,gCAAgC;AAChC,8BAA8B;AAC9B,cAAc;AACd,4BAA4B;AAC5B,yBAAyB;AACzB,+BAA+B;AAC/B,2BAA2B;AAC3B,iCAAiC;AACjC,+BAA+B;AAC/B,4BAA4B;AAC5B,6BAA6B;AAC7B,kEAAkE;AAClE,+DAA+D;AAC/D,QAAQ;AACR,kDAAkD;AAClD,mDAAmD;AACnD,qLAAqL;AACrL,sBAAsB;AACtB,QAAQ;AACR,EAAE;AACF,0CAA0C;AAC1C,EAAE;AACF,uCAAuC;AACvC,YAAY;AACZ,oCAAoC;AACpC,yDAAyD;AACzD,qCAAqC;AACrC,yCAAyC;AACzC,yCAAyC;AACzC,mDAAmD;AACnD,gDAAgD;AAChD,aAAa;AACb,wBAAwB;AACxB,8EAA8E;AAC9E,sBAAsB;AACtB,kBAAkB;AAClB,sGAAsG;AACtG,QAAQ;AACR,8BAA8B;AAC9B,IAAI;AACJ,EAAE;AACF,gEAAgE;AAChE,+GAA+G;AAC/G,IAAI"}
package/dist/setup.js CHANGED
@@ -63,7 +63,7 @@ export const installationSetup = new InstallationSetup(new LocalSetupTools(new H
63
63
  return Boolean(process.stdin.isTTY && process.stdout.isTTY);
64
64
  },
65
65
  async confirm(message) {
66
- const answer = await confirm({ message, initialValue: false });
66
+ const answer = await confirm({ message, initialValue: true });
67
67
  return !isCancel(answer) && answer;
68
68
  }
69
69
  });
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ interface Exclusions {
3
3
  files: ReadonlySet<string>;
4
4
  }
5
5
  export declare function buildSourceArchive(project: string, exclusions: Exclusions): {
6
- zipBytes: Uint8Array;
6
+ zipBytes: Uint8Array<ArrayBuffer>;
7
7
  fileCount: number;
8
8
  zipSizeBytes: number;
9
9
  sha256: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sourceArchive.d.ts","sourceRoot":"","sources":["../src/sourceArchive.ts"],"names":[],"mappings":"AAOA,UAAU,UAAU;IAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACzB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC7B;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAM7J"}
1
+ {"version":3,"file":"sourceArchive.d.ts","sourceRoot":"","sources":["../src/sourceArchive.ts"],"names":[],"mappings":"AAOA,UAAU,UAAU;IAChB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACzB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC7B;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAO1K"}
@@ -9,6 +9,7 @@ export function buildSourceArchive(project, exclusions) {
9
9
  const fileCount = Object.keys(files).length;
10
10
  if (fileCount === 0)
11
11
  throw new CliError("no_files_to_deploy", "No files found to deploy");
12
+ // fflate allocates a plain ArrayBuffer; fetch bodies require that narrower type.
12
13
  const zipBytes = zipSync(files, { level: 6, mtime: new Date(1980, 0, 1) });
13
14
  return { zipBytes, fileCount, zipSizeBytes: zipBytes.length, sha256: createHash("sha256").update(zipBytes).digest("hex") };
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sourceArchive.js","sourceRoot":"","sources":["../src/sourceArchive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAOxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,CAAA;AAElH,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,UAAsB;IACtE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IAC3C,IAAI,SAAS,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAA;IACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAC1E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9H,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,OAAe,EAAE,UAAsB;IAC5E,MAAM,KAAK,GAA+B,EAAE,CAAA;IAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACnE,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QACtH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;aACnF,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IACtI,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"sourceArchive.js","sourceRoot":"","sources":["../src/sourceArchive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAOxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,CAAA;AAElH,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,UAAsB;IACtE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IAC3C,IAAI,SAAS,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAA;IACzF,iFAAiF;IACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAA4B,CAAA;IACrG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9H,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,OAAe,EAAE,UAAsB;IAC5E,MAAM,KAAK,GAA+B,EAAE,CAAA;IAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACnE,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QACtH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;aACnF,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IACtI,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const TEMPLATES_REPOSITORY = "https://github.com/TerseAI/Terse-Examples";
2
+ /** Download an example with `actor/` and `client/` projects. Accepts `counter`, `gettingStarted/counter`, or `01_gettingStarted/counter`. */
3
+ export declare function downloadTemplate(name: string): Promise<Map<string, Uint8Array>>;
4
+ /** Write a template and pin each project's terse-sdk to the version init resolved. */
5
+ export declare function writeTemplate(files: Map<string, Uint8Array>, targetDir: string, sdkVersion: string): void;
6
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,8CAA8C,CAAA;AAK/E,6IAA6I;AAC7I,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAcrF;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAQzG"}
@@ -0,0 +1,78 @@
1
+ import { unzipSync } from "fflate";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { CliError } from "./cliError.js";
5
+ export const TEMPLATES_REPOSITORY = "https://github.com/TerseAI/Terse-Examples";
6
+ const TEMPLATES_ARCHIVE_URL = "https://codeload.github.com/TerseAI/Terse-Examples/zip/refs/heads/main";
7
+ /** Download an example with `actor/` and `client/` projects. Accepts `counter`, `gettingStarted/counter`, or `01_gettingStarted/counter`. */
8
+ export async function downloadTemplate(name) {
9
+ const templates = listTemplates(await fetchArchive());
10
+ const query = name.replaceAll("\\", "/").replace(/\/+$/, "");
11
+ const byName = templates.filter(template => template.id === query);
12
+ const match = templates.find(template => template.qualifiedIds.includes(query)) ?? (byName.length === 1 ? byName[0] : undefined);
13
+ if (match)
14
+ return match.files;
15
+ if (byName.length > 1) {
16
+ throw new CliError("ambiguous_template", `Template "${name}" matches ${byName.map(template => template.qualifiedIds[0]).join(" and ")}.`, {
17
+ detail: "Pass <section>/<example> to choose one."
18
+ });
19
+ }
20
+ throw new CliError("template_not_found", `No template named "${name}".`, {
21
+ detail: `Available templates: ${templates.map(template => template.id).join(", ")}. Browse them at ${TEMPLATES_REPOSITORY}.`
22
+ });
23
+ }
24
+ /** Write a template and pin each project's terse-sdk to the version init resolved. */
25
+ export function writeTemplate(files, targetDir, sdkVersion) {
26
+ for (const [file, content] of files) {
27
+ const outputPath = path.resolve(targetDir, file);
28
+ const relative = path.relative(targetDir, outputPath);
29
+ if (relative.startsWith("..") || path.isAbsolute(relative))
30
+ throw new CliError("invalid_template", `Template file ${file} is outside the project directory.`);
31
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
32
+ fs.writeFileSync(outputPath, path.basename(file) === "package.json" ? pinSdkVersion(content, sdkVersion) : content);
33
+ }
34
+ }
35
+ async function fetchArchive() {
36
+ let response;
37
+ try {
38
+ response = await fetch(TEMPLATES_ARCHIVE_URL, { signal: AbortSignal.timeout(30_000) });
39
+ }
40
+ catch (error) {
41
+ throw new CliError("template_download_failed", "Could not download templates.", { detail: error instanceof Error ? error.message : String(error) });
42
+ }
43
+ if (!response.ok) {
44
+ await response.body?.cancel();
45
+ throw new CliError("template_download_failed", `Template download failed (HTTP ${response.status}).`, { detail: `Check ${TEMPLATES_REPOSITORY}.` });
46
+ }
47
+ return unzipSync(new Uint8Array(await response.arrayBuffer()));
48
+ }
49
+ function listTemplates(archive) {
50
+ const examples = new Map();
51
+ for (const [entry, content] of Object.entries(archive)) {
52
+ if (entry.endsWith("/"))
53
+ continue;
54
+ // Archive entries are <repository>-<ref>/<section>/<example>/<file>.
55
+ const [, section, example, ...rest] = entry.split("/");
56
+ if (!section || !example || rest.length === 0)
57
+ continue;
58
+ const key = `${section}/${example}`;
59
+ const files = examples.get(key) ?? new Map();
60
+ files.set(rest.join("/"), content);
61
+ examples.set(key, files);
62
+ }
63
+ return [...examples]
64
+ .filter(([, files]) => files.has("actor/package.json") && files.has("client/package.json"))
65
+ .map(([key, files]) => {
66
+ const [section, id] = key.split("/");
67
+ const sectionId = /^\d+_(.+)$/.exec(section)?.[1] ?? section;
68
+ return { id, qualifiedIds: [`${sectionId}/${id}`, key], files };
69
+ });
70
+ }
71
+ function pinSdkVersion(content, sdkVersion) {
72
+ const manifest = JSON.parse(Buffer.from(content).toString("utf8"));
73
+ if (!manifest.dependencies?.["terse-sdk"])
74
+ return content;
75
+ manifest.dependencies["terse-sdk"] = sdkVersion;
76
+ return `${JSON.stringify(manifest, null, 4)}\n`;
77
+ }
78
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "terse-cli",
3
- "version": "0.9.20",
3
+ "version": "0.9.22",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -33,15 +33,14 @@
33
33
  "handlebars": "^4.7.9",
34
34
  "import-meta-resolve": "^4.2.0",
35
35
  "json-schema-to-typescript": "^15.0.4",
36
- "little-durable": "0.1.3",
37
36
  "luxon": "^3.7.2",
38
37
  "ora": "^8.0.0",
39
38
  "smol-toml": "^1.6.1",
40
39
  "tsx": "^4.0.0",
41
40
  "typescript": "^5.0.0",
42
41
  "zod": "^4.3.6",
43
- "terse-sdk": "0.9.20",
44
- "terse-types": "0.9.20"
42
+ "terse-sdk": "0.9.22",
43
+ "terse-types": "0.9.22"
45
44
  },
46
45
  "devDependencies": {
47
46
  "@types/luxon": "^3.7.1",
@@ -7,8 +7,7 @@
7
7
  "dev": "tsc --watch"
8
8
  },
9
9
  "dependencies": {
10
- "terse-sdk": "{{sdkVersion}}",
11
- "zod": "^4.3.6"
10
+ "terse-sdk": "{{sdkVersion}}"
12
11
  },
13
12
  "devDependencies": {
14
13
  "typescript": "^5.0.0"