@orgloop/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 (94) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/commands/add.d.ts +8 -0
  3. package/dist/commands/add.d.ts.map +1 -0
  4. package/dist/commands/add.js +363 -0
  5. package/dist/commands/add.js.map +1 -0
  6. package/dist/commands/apply.d.ts +9 -0
  7. package/dist/commands/apply.d.ts.map +1 -0
  8. package/dist/commands/apply.js +289 -0
  9. package/dist/commands/apply.js.map +1 -0
  10. package/dist/commands/doctor.d.ts +45 -0
  11. package/dist/commands/doctor.d.ts.map +1 -0
  12. package/dist/commands/doctor.js +346 -0
  13. package/dist/commands/doctor.js.map +1 -0
  14. package/dist/commands/env.d.ts +23 -0
  15. package/dist/commands/env.d.ts.map +1 -0
  16. package/dist/commands/env.js +230 -0
  17. package/dist/commands/env.js.map +1 -0
  18. package/dist/commands/hook.d.ts +16 -0
  19. package/dist/commands/hook.d.ts.map +1 -0
  20. package/dist/commands/hook.js +80 -0
  21. package/dist/commands/hook.js.map +1 -0
  22. package/dist/commands/init.d.ts +42 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +532 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/inspect.d.ts +8 -0
  27. package/dist/commands/inspect.d.ts.map +1 -0
  28. package/dist/commands/inspect.js +177 -0
  29. package/dist/commands/inspect.js.map +1 -0
  30. package/dist/commands/install-service.d.ts +8 -0
  31. package/dist/commands/install-service.d.ts.map +1 -0
  32. package/dist/commands/install-service.js +182 -0
  33. package/dist/commands/install-service.js.map +1 -0
  34. package/dist/commands/logs.d.ts +8 -0
  35. package/dist/commands/logs.d.ts.map +1 -0
  36. package/dist/commands/logs.js +197 -0
  37. package/dist/commands/logs.js.map +1 -0
  38. package/dist/commands/plan.d.ts +9 -0
  39. package/dist/commands/plan.d.ts.map +1 -0
  40. package/dist/commands/plan.js +200 -0
  41. package/dist/commands/plan.js.map +1 -0
  42. package/dist/commands/routes.d.ts +37 -0
  43. package/dist/commands/routes.d.ts.map +1 -0
  44. package/dist/commands/routes.js +167 -0
  45. package/dist/commands/routes.js.map +1 -0
  46. package/dist/commands/service.d.ts +9 -0
  47. package/dist/commands/service.d.ts.map +1 -0
  48. package/dist/commands/service.js +178 -0
  49. package/dist/commands/service.js.map +1 -0
  50. package/dist/commands/status.d.ts +8 -0
  51. package/dist/commands/status.d.ts.map +1 -0
  52. package/dist/commands/status.js +176 -0
  53. package/dist/commands/status.js.map +1 -0
  54. package/dist/commands/stop.d.ts +8 -0
  55. package/dist/commands/stop.d.ts.map +1 -0
  56. package/dist/commands/stop.js +102 -0
  57. package/dist/commands/stop.js.map +1 -0
  58. package/dist/commands/test.d.ts +8 -0
  59. package/dist/commands/test.d.ts.map +1 -0
  60. package/dist/commands/test.js +236 -0
  61. package/dist/commands/test.js.map +1 -0
  62. package/dist/commands/validate.d.ts +33 -0
  63. package/dist/commands/validate.d.ts.map +1 -0
  64. package/dist/commands/validate.js +501 -0
  65. package/dist/commands/validate.js.map +1 -0
  66. package/dist/commands/version.d.ts +8 -0
  67. package/dist/commands/version.d.ts.map +1 -0
  68. package/dist/commands/version.js +42 -0
  69. package/dist/commands/version.js.map +1 -0
  70. package/dist/config.d.ts +27 -0
  71. package/dist/config.d.ts.map +1 -0
  72. package/dist/config.js +169 -0
  73. package/dist/config.js.map +1 -0
  74. package/dist/env-metadata.d.ts +12 -0
  75. package/dist/env-metadata.d.ts.map +1 -0
  76. package/dist/env-metadata.js +39 -0
  77. package/dist/env-metadata.js.map +1 -0
  78. package/dist/index.d.ts +8 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +86 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/module-resolver.d.ts +42 -0
  83. package/dist/module-resolver.d.ts.map +1 -0
  84. package/dist/module-resolver.js +134 -0
  85. package/dist/module-resolver.js.map +1 -0
  86. package/dist/output.d.ts +36 -0
  87. package/dist/output.d.ts.map +1 -0
  88. package/dist/output.js +142 -0
  89. package/dist/output.js.map +1 -0
  90. package/dist/resolve-connectors.d.ts +27 -0
  91. package/dist/resolve-connectors.d.ts.map +1 -0
  92. package/dist/resolve-connectors.js +94 -0
  93. package/dist/resolve-connectors.js.map +1 -0
  94. package/package.json +51 -0
package/dist/output.js ADDED
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Output formatting utilities for the CLI.
3
+ *
4
+ * Provides colored output, table formatting, JSON mode,
5
+ * quiet mode, and spinner support.
6
+ */
7
+ import chalk from 'chalk';
8
+ import ora, {} from 'ora';
9
+ // ─── Global output state ─────────────────────────────────────────────────────
10
+ let jsonMode = false;
11
+ let quietMode = false;
12
+ let verboseMode = false;
13
+ export function setJsonMode(enabled) {
14
+ jsonMode = enabled;
15
+ }
16
+ export function setQuietMode(enabled) {
17
+ quietMode = enabled;
18
+ }
19
+ export function setVerboseMode(enabled) {
20
+ verboseMode = enabled;
21
+ }
22
+ export function isJsonMode() {
23
+ return jsonMode;
24
+ }
25
+ // ─── Basic output ────────────────────────────────────────────────────────────
26
+ export function info(message) {
27
+ if (quietMode || jsonMode)
28
+ return;
29
+ console.log(message);
30
+ }
31
+ export function success(message) {
32
+ if (quietMode || jsonMode)
33
+ return;
34
+ console.log(chalk.green(` ✓ ${message}`));
35
+ }
36
+ export function error(message) {
37
+ if (jsonMode)
38
+ return;
39
+ console.error(chalk.red(` ✗ ${message}`));
40
+ }
41
+ export function warn(message) {
42
+ if (quietMode || jsonMode)
43
+ return;
44
+ console.warn(chalk.yellow(` ! ${message}`));
45
+ }
46
+ export function verbose(message) {
47
+ if (!verboseMode || quietMode || jsonMode)
48
+ return;
49
+ console.log(chalk.dim(` … ${message}`));
50
+ }
51
+ export function blank() {
52
+ if (quietMode || jsonMode)
53
+ return;
54
+ console.log();
55
+ }
56
+ // ─── Styled output ───────────────────────────────────────────────────────────
57
+ export function heading(text) {
58
+ if (quietMode || jsonMode)
59
+ return;
60
+ console.log(chalk.bold(text));
61
+ }
62
+ export function subheading(text) {
63
+ if (quietMode || jsonMode)
64
+ return;
65
+ console.log(chalk.bold.dim(`\n ${text}:`));
66
+ }
67
+ export function planAdd(text) {
68
+ if (quietMode || jsonMode)
69
+ return;
70
+ console.log(chalk.green(` + ${text}`));
71
+ }
72
+ export function planChange(text) {
73
+ if (quietMode || jsonMode)
74
+ return;
75
+ console.log(chalk.yellow(` ~ ${text}`));
76
+ }
77
+ export function planUnchanged(text) {
78
+ if (quietMode || jsonMode)
79
+ return;
80
+ console.log(chalk.dim(` = ${text}`));
81
+ }
82
+ export function planRemove(text) {
83
+ if (quietMode || jsonMode)
84
+ return;
85
+ console.log(chalk.red(` - ${text}`));
86
+ }
87
+ // ─── JSON output ─────────────────────────────────────────────────────────────
88
+ export function json(data) {
89
+ console.log(JSON.stringify(data, null, 2));
90
+ }
91
+ export function table(columns, rows) {
92
+ if (jsonMode) {
93
+ json(rows);
94
+ return;
95
+ }
96
+ if (quietMode)
97
+ return;
98
+ // Calculate column widths
99
+ const widths = columns.map((col) => {
100
+ const headerLen = col.header.length;
101
+ const maxDataLen = rows.reduce((max, row) => Math.max(max, (row[col.key] ?? '').length), 0);
102
+ return col.width ?? Math.max(headerLen, maxDataLen) + 2;
103
+ });
104
+ // Print header
105
+ const headerLine = columns.map((col, i) => col.header.padEnd(widths[i])).join('');
106
+ console.log(chalk.dim(` ${headerLine}`));
107
+ // Print rows
108
+ for (const row of rows) {
109
+ const line = columns
110
+ .map((col, i) => {
111
+ const val = row[col.key] ?? '';
112
+ return col.align === 'right' ? val.padStart(widths[i]) : val.padEnd(widths[i]);
113
+ })
114
+ .join('');
115
+ console.log(` ${line}`);
116
+ }
117
+ }
118
+ // ─── Spinner ─────────────────────────────────────────────────────────────────
119
+ export function spinner(text) {
120
+ if (jsonMode || quietMode) {
121
+ // Return a no-op spinner
122
+ return ora({ text, isSilent: true });
123
+ }
124
+ return ora({ text, color: 'cyan' }).start();
125
+ }
126
+ // ─── Validation output ───────────────────────────────────────────────────────
127
+ export function validPass(file, description) {
128
+ if (quietMode || jsonMode)
129
+ return;
130
+ console.log(`${chalk.green('✓')} ${file} — ${description}`);
131
+ }
132
+ export function validFail(file, description) {
133
+ if (jsonMode)
134
+ return;
135
+ console.log(`${chalk.red('✗')} ${file} — ${description}`);
136
+ }
137
+ export function validWarn(file, description) {
138
+ if (quietMode || jsonMode)
139
+ return;
140
+ console.log(`${chalk.yellow('!')} ${file} — ${description}`);
141
+ }
142
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Connector instantiation bridge.
3
+ *
4
+ * Dynamically imports connector packages referenced in config,
5
+ * instantiates source/actor connectors, and returns Maps keyed by ID.
6
+ */
7
+ import type { ActorConnector, ConnectorRegistration, OrgLoopConfig, SourceConnector } from '@orgloop/sdk';
8
+ export interface ResolvedConnectors {
9
+ sources: Map<string, SourceConnector>;
10
+ actors: Map<string, ActorConnector>;
11
+ }
12
+ export type ImportFn = (specifier: string) => Promise<{
13
+ default: () => ConnectorRegistration;
14
+ }>;
15
+ /**
16
+ * Resolve all connectors referenced in config by dynamically importing
17
+ * their packages and instantiating source/actor instances.
18
+ */
19
+ export declare function resolveConnectors(config: OrgLoopConfig, importFn?: ImportFn): Promise<ResolvedConnectors>;
20
+ /**
21
+ * Resolve connector registrations (without instantiating sources/actors).
22
+ *
23
+ * Used by doctor to discover credential_validators and service_detectors
24
+ * without needing a full engine startup. Returns a Map of package name -> registration.
25
+ */
26
+ export declare function resolveConnectorRegistrations(config: OrgLoopConfig, importFn?: ImportFn): Promise<Map<string, ConnectorRegistration>>;
27
+ //# sourceMappingURL=resolve-connectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-connectors.d.ts","sourceRoot":"","sources":["../src/resolve-connectors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;CAAE,CAAC,CAAC;AAEhG;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,aAAa,EACrB,QAAQ,GAAE,QAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAuE7B;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAClD,MAAM,EAAE,aAAa,EACrB,QAAQ,GAAE,QAA2B,GACnC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAuB7C"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Connector instantiation bridge.
3
+ *
4
+ * Dynamically imports connector packages referenced in config,
5
+ * instantiates source/actor connectors, and returns Maps keyed by ID.
6
+ */
7
+ /**
8
+ * Resolve all connectors referenced in config by dynamically importing
9
+ * their packages and instantiating source/actor instances.
10
+ */
11
+ export async function resolveConnectors(config, importFn = (s) => import(s)) {
12
+ const sources = new Map();
13
+ const actors = new Map();
14
+ // Collect unique connector package names
15
+ const packageMap = new Map();
16
+ const allPackages = new Set();
17
+ for (const s of config.sources) {
18
+ allPackages.add(s.connector);
19
+ }
20
+ for (const a of config.actors) {
21
+ allPackages.add(a.connector);
22
+ }
23
+ // Import each unique connector package
24
+ for (const packageName of allPackages) {
25
+ if (packageMap.has(packageName))
26
+ continue;
27
+ let mod;
28
+ try {
29
+ mod = await importFn(packageName);
30
+ }
31
+ catch (err) {
32
+ const msg = err instanceof Error ? err.message : String(err);
33
+ throw new Error(`Failed to import connector "${packageName}": ${msg}\n` +
34
+ ` Hint: run \`pnpm add ${packageName}\` to install it.`);
35
+ }
36
+ if (typeof mod.default !== 'function') {
37
+ throw new Error(`Connector "${packageName}" does not export a default registration function.`);
38
+ }
39
+ const registration = mod.default();
40
+ packageMap.set(packageName, registration);
41
+ }
42
+ // Instantiate sources
43
+ for (const sourceCfg of config.sources) {
44
+ const reg = packageMap.get(sourceCfg.connector);
45
+ if (!reg)
46
+ continue;
47
+ if (!reg.source) {
48
+ throw new Error(`Connector "${sourceCfg.connector}" does not provide a source, ` +
49
+ `but source "${sourceCfg.id}" requires one.`);
50
+ }
51
+ sources.set(sourceCfg.id, new reg.source());
52
+ }
53
+ // Instantiate actors
54
+ for (const actorCfg of config.actors) {
55
+ const reg = packageMap.get(actorCfg.connector);
56
+ if (!reg)
57
+ continue;
58
+ if (!reg.target) {
59
+ throw new Error(`Connector "${actorCfg.connector}" does not provide a target, ` +
60
+ `but actor "${actorCfg.id}" requires one.`);
61
+ }
62
+ actors.set(actorCfg.id, new reg.target());
63
+ }
64
+ return { sources, actors };
65
+ }
66
+ /**
67
+ * Resolve connector registrations (without instantiating sources/actors).
68
+ *
69
+ * Used by doctor to discover credential_validators and service_detectors
70
+ * without needing a full engine startup. Returns a Map of package name -> registration.
71
+ */
72
+ export async function resolveConnectorRegistrations(config, importFn = (s) => import(s)) {
73
+ const registrations = new Map();
74
+ const allPackages = new Set();
75
+ for (const s of config.sources) {
76
+ allPackages.add(s.connector);
77
+ }
78
+ for (const a of config.actors) {
79
+ allPackages.add(a.connector);
80
+ }
81
+ for (const packageName of allPackages) {
82
+ try {
83
+ const mod = await importFn(packageName);
84
+ if (typeof mod.default === 'function') {
85
+ registrations.set(packageName, mod.default());
86
+ }
87
+ }
88
+ catch {
89
+ // Best-effort — doctor should not fail if a connector can't be imported
90
+ }
91
+ }
92
+ return registrations;
93
+ }
94
+ //# sourceMappingURL=resolve-connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-connectors.js","sourceRoot":"","sources":["../src/resolve-connectors.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@orgloop/cli",
3
+ "version": "0.1.0",
4
+ "description": "OrgLoop command-line interface",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "orgloop": "dist/index.js"
10
+ },
11
+ "dependencies": {
12
+ "@types/js-yaml": "^4.0.9",
13
+ "ajv": "^8.17.0",
14
+ "chalk": "^5.4.0",
15
+ "commander": "^13.0.0",
16
+ "inquirer": "^12.0.0",
17
+ "js-yaml": "^4.1.0",
18
+ "ora": "^8.1.0",
19
+ "@orgloop/core": "0.1.0",
20
+ "@orgloop/sdk": "0.1.0"
21
+ },
22
+ "devDependencies": {
23
+ "@types/inquirer": "^9.0.7",
24
+ "@orgloop/connector-github": "0.1.0",
25
+ "@orgloop/connector-claude-code": "0.1.0",
26
+ "@orgloop/connector-cron": "0.1.0",
27
+ "@orgloop/connector-openclaw": "0.1.0",
28
+ "@orgloop/connector-linear": "0.1.0",
29
+ "@orgloop/logger-file": "0.1.0",
30
+ "@orgloop/connector-webhook": "0.1.0",
31
+ "@orgloop/logger-console": "0.1.0",
32
+ "@orgloop/transform-dedup": "0.1.0",
33
+ "@orgloop/transform-filter": "0.1.0",
34
+ "@orgloop/logger-syslog": "0.1.0",
35
+ "@orgloop/logger-otel": "0.1.0",
36
+ "@orgloop/transform-enrich": "0.1.0"
37
+ },
38
+ "files": [
39
+ "dist"
40
+ ],
41
+ "publishConfig": {
42
+ "access": "public"
43
+ },
44
+ "license": "MIT",
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "clean": "rm -rf dist",
48
+ "typecheck": "tsc --noEmit",
49
+ "test": "vitest run"
50
+ }
51
+ }