@loopstack/cli 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.
Files changed (91) hide show
  1. package/README.md +61 -0
  2. package/dist/commands/create.d.ts +3 -0
  3. package/dist/commands/create.d.ts.map +1 -0
  4. package/dist/commands/create.js +80 -0
  5. package/dist/commands/create.js.map +1 -0
  6. package/dist/commands/env.d.ts +3 -0
  7. package/dist/commands/env.d.ts.map +1 -0
  8. package/dist/commands/env.js +42 -0
  9. package/dist/commands/env.js.map +1 -0
  10. package/dist/commands/list.d.ts +3 -0
  11. package/dist/commands/list.d.ts.map +1 -0
  12. package/dist/commands/list.js +32 -0
  13. package/dist/commands/list.js.map +1 -0
  14. package/dist/commands/login.d.ts +3 -0
  15. package/dist/commands/login.d.ts.map +1 -0
  16. package/dist/commands/login.js +62 -0
  17. package/dist/commands/login.js.map +1 -0
  18. package/dist/commands/run.d.ts +3 -0
  19. package/dist/commands/run.d.ts.map +1 -0
  20. package/dist/commands/run.js +87 -0
  21. package/dist/commands/run.js.map +1 -0
  22. package/dist/commands/runs.d.ts +3 -0
  23. package/dist/commands/runs.d.ts.map +1 -0
  24. package/dist/commands/runs.js +147 -0
  25. package/dist/commands/runs.js.map +1 -0
  26. package/dist/commands/watch.d.ts +3 -0
  27. package/dist/commands/watch.d.ts.map +1 -0
  28. package/dist/commands/watch.js +48 -0
  29. package/dist/commands/watch.js.map +1 -0
  30. package/dist/config/config.d.ts +14 -0
  31. package/dist/config/config.d.ts.map +1 -0
  32. package/dist/config/config.js +25 -0
  33. package/dist/config/config.js.map +1 -0
  34. package/dist/config/resolve.d.ts +18 -0
  35. package/dist/config/resolve.d.ts.map +1 -0
  36. package/dist/config/resolve.js +57 -0
  37. package/dist/config/resolve.js.map +1 -0
  38. package/dist/errors.d.ts +12 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +36 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/hitl/discovery.d.ts +15 -0
  43. package/dist/hitl/discovery.d.ts.map +1 -0
  44. package/dist/hitl/discovery.js +53 -0
  45. package/dist/hitl/discovery.js.map +1 -0
  46. package/dist/hitl/editor.d.ts +4 -0
  47. package/dist/hitl/editor.d.ts.map +1 -0
  48. package/dist/hitl/editor.js +73 -0
  49. package/dist/hitl/editor.js.map +1 -0
  50. package/dist/hitl/idle-handler.d.ts +8 -0
  51. package/dist/hitl/idle-handler.d.ts.map +1 -0
  52. package/dist/hitl/idle-handler.js +70 -0
  53. package/dist/hitl/idle-handler.js.map +1 -0
  54. package/dist/hitl/prompt.d.ts +14 -0
  55. package/dist/hitl/prompt.d.ts.map +1 -0
  56. package/dist/hitl/prompt.js +117 -0
  57. package/dist/hitl/prompt.js.map +1 -0
  58. package/dist/main.d.ts +3 -0
  59. package/dist/main.d.ts.map +1 -0
  60. package/dist/main.js +33 -0
  61. package/dist/main.js.map +1 -0
  62. package/dist/output/format.d.ts +6 -0
  63. package/dist/output/format.d.ts.map +1 -0
  64. package/dist/output/format.js +39 -0
  65. package/dist/output/format.js.map +1 -0
  66. package/dist/output/studio-link.d.ts +4 -0
  67. package/dist/output/studio-link.d.ts.map +1 -0
  68. package/dist/output/studio-link.js +17 -0
  69. package/dist/output/studio-link.js.map +1 -0
  70. package/dist/run/args.d.ts +2 -0
  71. package/dist/run/args.d.ts.map +1 -0
  72. package/dist/run/args.js +41 -0
  73. package/dist/run/args.js.map +1 -0
  74. package/dist/run/follow.d.ts +13 -0
  75. package/dist/run/follow.d.ts.map +1 -0
  76. package/dist/run/follow.js +130 -0
  77. package/dist/run/follow.js.map +1 -0
  78. package/dist/run/workspace.d.ts +3 -0
  79. package/dist/run/workspace.d.ts.map +1 -0
  80. package/dist/run/workspace.js +26 -0
  81. package/dist/run/workspace.js.map +1 -0
  82. package/fixtures/app/CLAUDE.md +40 -0
  83. package/fixtures/app/README.md +21 -0
  84. package/fixtures/app/docker-compose.yml +33 -0
  85. package/fixtures/app/env.example +16 -0
  86. package/fixtures/app/nest-cli.json +10 -0
  87. package/fixtures/app/src/app.module.ts +8 -0
  88. package/fixtures/app/src/hello/hello.module.ts +12 -0
  89. package/fixtures/app/src/hello/hello.workflow.ts +28 -0
  90. package/fixtures/app/src/main.ts +8 -0
  91. package/package.json +41 -0
@@ -0,0 +1,16 @@
1
+ # All values are optional — the defaults below match docker-compose.yml.
2
+
3
+ # PORT=3000
4
+
5
+ # DATABASE_HOST=localhost
6
+ # DATABASE_PORT=5432
7
+ # DATABASE_USERNAME=postgres
8
+ # DATABASE_PASSWORD=admin
9
+ # DATABASE_NAME=postgres
10
+
11
+ # REDIS_HOST=localhost
12
+ # REDIS_PORT=6379
13
+ # REDIS_PASSWORD=
14
+
15
+ # API keys for LLM feature modules (e.g. @loopstack/claude-module)
16
+ # ANTHROPIC_API_KEY=
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/nest-cli",
3
+ "collection": "@nestjs/schematics",
4
+ "sourceRoot": "src",
5
+ "compilerOptions": {
6
+ "deleteOutDir": true,
7
+ "assets": ["**/*.yaml"],
8
+ "watchAssets": true
9
+ }
10
+ }
@@ -0,0 +1,8 @@
1
+ import { Module } from '@nestjs/common';
2
+ import { LoopstackModule } from '@loopstack/loopstack-module';
3
+ import { HelloModule } from './hello/hello.module';
4
+
5
+ @Module({
6
+ imports: [LoopstackModule.forRoot(), HelloModule],
7
+ })
8
+ export class AppModule {}
@@ -0,0 +1,12 @@
1
+ import { Module } from '@nestjs/common';
2
+ import { StudioApp } from '@loopstack/common';
3
+ import { HelloWorkflow } from './hello.workflow';
4
+
5
+ @StudioApp({
6
+ title: 'My First App',
7
+ workflows: [HelloWorkflow],
8
+ })
9
+ @Module({
10
+ providers: [HelloWorkflow],
11
+ })
12
+ export class HelloModule {}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { BaseWorkflow, MessageDocument, Transition, Workflow } from '@loopstack/common';
3
+ import type { RunContext } from '@loopstack/common';
4
+
5
+ const InputSchema = z.object({
6
+ name: z.string().default('World'),
7
+ });
8
+
9
+ type InputArgs = z.infer<typeof InputSchema>;
10
+
11
+ @Workflow({
12
+ title: 'Hello World',
13
+ description: 'Greets you by name — replace this with your first real workflow.',
14
+ schema: InputSchema,
15
+ })
16
+ export class HelloWorkflow extends BaseWorkflow<InputArgs> {
17
+ @Transition({ from: 'start', to: 'end' })
18
+ async greet(_state: unknown, ctx: RunContext<InputArgs>) {
19
+ const greeting = `Hello, ${ctx.args.name}! 👋`;
20
+
21
+ await this.documentStore.save(MessageDocument, {
22
+ role: 'assistant',
23
+ text: greeting,
24
+ });
25
+
26
+ this.assignResult({ greeting });
27
+ }
28
+ }
@@ -0,0 +1,8 @@
1
+ import { NestFactory } from '@nestjs/core';
2
+ import { AppModule } from './app.module';
3
+
4
+ async function bootstrap() {
5
+ const app = await NestFactory.create(AppModule);
6
+ await app.listen(process.env.PORT ?? 3000);
7
+ }
8
+ void bootstrap();
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@loopstack/cli",
3
+ "displayName": "Loopstack CLI",
4
+ "description": "Run, trace, and watch Loopstack workflows from the terminal",
5
+ "version": "0.1.0",
6
+ "license": "MIT",
7
+ "author": {
8
+ "name": "Jakob Klippel",
9
+ "url": "https://www.linkedin.com/in/jakob-klippel/"
10
+ },
11
+ "type": "module",
12
+ "bin": {
13
+ "loopstack": "dist/main.js"
14
+ },
15
+ "main": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "engines": {
18
+ "node": ">=20"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.build.json",
22
+ "compile": "tsc --noEmit",
23
+ "format": "prettier --write .",
24
+ "lint": "eslint .",
25
+ "test": "vitest run",
26
+ "watch": "tsc -p tsconfig.build.json --watch"
27
+ },
28
+ "dependencies": {
29
+ "@loopstack/client": "^0.37.0",
30
+ "@loopstack/contracts": "^0.37.0",
31
+ "commander": "^15.0.0",
32
+ "picocolors": "^1.1.1"
33
+ },
34
+ "devDependencies": {
35
+ "vitest": "^4.1.6"
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "fixtures"
40
+ ]
41
+ }