shreni 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/ARCHITECTURE.md +260 -0
- package/LICENSE +201 -0
- package/README.md +519 -0
- package/TRADEMARK.md +97 -0
- package/dist/agents/parikshaka.d.ts +11 -0
- package/dist/agents/parikshaka.d.ts.map +1 -0
- package/dist/agents/parikshaka.js +80 -0
- package/dist/agents/parikshaka.js.map +1 -0
- package/dist/agents/providers/claude.d.ts +3 -0
- package/dist/agents/providers/claude.d.ts.map +1 -0
- package/dist/agents/providers/claude.js +100 -0
- package/dist/agents/providers/claude.js.map +1 -0
- package/dist/agents/providers/codex.d.ts +3 -0
- package/dist/agents/providers/codex.d.ts.map +1 -0
- package/dist/agents/providers/codex.js +123 -0
- package/dist/agents/providers/codex.js.map +1 -0
- package/dist/agents/providers/gemini.d.ts +3 -0
- package/dist/agents/providers/gemini.d.ts.map +1 -0
- package/dist/agents/providers/gemini.js +77 -0
- package/dist/agents/providers/gemini.js.map +1 -0
- package/dist/agents/providers/index.d.ts +6 -0
- package/dist/agents/providers/index.d.ts.map +1 -0
- package/dist/agents/providers/index.js +35 -0
- package/dist/agents/providers/index.js.map +1 -0
- package/dist/agents/providers/registry.d.ts +20 -0
- package/dist/agents/providers/registry.d.ts.map +1 -0
- package/dist/agents/providers/registry.js +91 -0
- package/dist/agents/providers/registry.js.map +1 -0
- package/dist/agents/providers/types.d.ts +42 -0
- package/dist/agents/providers/types.d.ts.map +1 -0
- package/dist/agents/providers/types.js +61 -0
- package/dist/agents/providers/types.js.map +1 -0
- package/dist/agents/runner.d.ts +6 -0
- package/dist/agents/runner.d.ts.map +1 -0
- package/dist/agents/runner.js +159 -0
- package/dist/agents/runner.js.map +1 -0
- package/dist/agents/silpi.d.ts +3 -0
- package/dist/agents/silpi.d.ts.map +1 -0
- package/dist/agents/silpi.js +101 -0
- package/dist/agents/silpi.js.map +1 -0
- package/dist/agents/viharapala.d.ts +5 -0
- package/dist/agents/viharapala.d.ts.map +1 -0
- package/dist/agents/viharapala.js +128 -0
- package/dist/agents/viharapala.js.map +1 -0
- package/dist/cli/agents.d.ts +14 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +47 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/detect-toolchain.d.ts +10 -0
- package/dist/cli/detect-toolchain.d.ts.map +1 -0
- package/dist/cli/detect-toolchain.js +77 -0
- package/dist/cli/detect-toolchain.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +342 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-kshetra.d.ts +59 -0
- package/dist/cli/init-kshetra.d.ts.map +1 -0
- package/dist/cli/init-kshetra.js +531 -0
- package/dist/cli/init-kshetra.js.map +1 -0
- package/dist/cli/list.d.ts +11 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +45 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/logs.d.ts +20 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +144 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/migrate.d.ts +8 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +116 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/pause.d.ts +24 -0
- package/dist/cli/pause.d.ts.map +1 -0
- package/dist/cli/pause.js +41 -0
- package/dist/cli/pause.js.map +1 -0
- package/dist/cli/phalaka-autostart.d.ts +11 -0
- package/dist/cli/phalaka-autostart.d.ts.map +1 -0
- package/dist/cli/phalaka-autostart.js +28 -0
- package/dist/cli/phalaka-autostart.js.map +1 -0
- package/dist/cli/phalaka-server.d.ts +2 -0
- package/dist/cli/phalaka-server.d.ts.map +1 -0
- package/dist/cli/phalaka-server.js +20 -0
- package/dist/cli/phalaka-server.js.map +1 -0
- package/dist/cli/phalaka.d.ts +30 -0
- package/dist/cli/phalaka.d.ts.map +1 -0
- package/dist/cli/phalaka.js +60 -0
- package/dist/cli/phalaka.js.map +1 -0
- package/dist/cli/pid.d.ts +9 -0
- package/dist/cli/pid.d.ts.map +1 -0
- package/dist/cli/pid.js +66 -0
- package/dist/cli/pid.js.map +1 -0
- package/dist/cli/provider-preflight.d.ts +11 -0
- package/dist/cli/provider-preflight.d.ts.map +1 -0
- package/dist/cli/provider-preflight.js +70 -0
- package/dist/cli/provider-preflight.js.map +1 -0
- package/dist/cli/register.d.ts +8 -0
- package/dist/cli/register.d.ts.map +1 -0
- package/dist/cli/register.js +34 -0
- package/dist/cli/register.js.map +1 -0
- package/dist/cli/run.d.ts +3 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +40 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/start.d.ts +11 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +26 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli/status.d.ts +39 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +207 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/stop.d.ts +13 -0
- package/dist/cli/stop.d.ts.map +1 -0
- package/dist/cli/stop.js +18 -0
- package/dist/cli/stop.js.map +1 -0
- package/dist/cli/sync.d.ts +6 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +31 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/tail.d.ts +6 -0
- package/dist/cli/tail.d.ts.map +1 -0
- package/dist/cli/tail.js +170 -0
- package/dist/cli/tail.js.map +1 -0
- package/dist/cli/telemetry.d.ts +2 -0
- package/dist/cli/telemetry.d.ts.map +1 -0
- package/dist/cli/telemetry.js +42 -0
- package/dist/cli/telemetry.js.map +1 -0
- package/dist/cli/verify-hooks.d.ts +12 -0
- package/dist/cli/verify-hooks.d.ts.map +1 -0
- package/dist/cli/verify-hooks.js +38 -0
- package/dist/cli/verify-hooks.js.map +1 -0
- package/dist/cli/worker.d.ts +2 -0
- package/dist/cli/worker.d.ts.map +1 -0
- package/dist/cli/worker.js +211 -0
- package/dist/cli/worker.js.map +1 -0
- package/dist/kshetra/config.d.ts +64 -0
- package/dist/kshetra/config.d.ts.map +1 -0
- package/dist/kshetra/config.js +173 -0
- package/dist/kshetra/config.js.map +1 -0
- package/dist/kshetra/registry.d.ts +5 -0
- package/dist/kshetra/registry.d.ts.map +1 -0
- package/dist/kshetra/registry.js +69 -0
- package/dist/kshetra/registry.js.map +1 -0
- package/dist/kshetra/state.d.ts +57 -0
- package/dist/kshetra/state.d.ts.map +1 -0
- package/dist/kshetra/state.js +195 -0
- package/dist/kshetra/state.js.map +1 -0
- package/dist/kshetra/toolchain.d.ts +20 -0
- package/dist/kshetra/toolchain.d.ts.map +1 -0
- package/dist/kshetra/toolchain.js +146 -0
- package/dist/kshetra/toolchain.js.map +1 -0
- package/dist/phalaka/api.d.ts +123 -0
- package/dist/phalaka/api.d.ts.map +1 -0
- package/dist/phalaka/api.js +196 -0
- package/dist/phalaka/api.js.map +1 -0
- package/dist/phalaka/beads-read.d.ts +49 -0
- package/dist/phalaka/beads-read.d.ts.map +1 -0
- package/dist/phalaka/beads-read.js +174 -0
- package/dist/phalaka/beads-read.js.map +1 -0
- package/dist/phalaka/pid.d.ts +6 -0
- package/dist/phalaka/pid.d.ts.map +1 -0
- package/dist/phalaka/pid.js +48 -0
- package/dist/phalaka/pid.js.map +1 -0
- package/dist/phalaka/server.d.ts +10 -0
- package/dist/phalaka/server.d.ts.map +1 -0
- package/dist/phalaka/server.js +30 -0
- package/dist/phalaka/server.js.map +1 -0
- package/dist/phalaka/token.d.ts +5 -0
- package/dist/phalaka/token.d.ts.map +1 -0
- package/dist/phalaka/token.js +40 -0
- package/dist/phalaka/token.js.map +1 -0
- package/dist/phalaka/ui.d.ts +15 -0
- package/dist/phalaka/ui.d.ts.map +1 -0
- package/dist/phalaka/ui.js +233 -0
- package/dist/phalaka/ui.js.map +1 -0
- package/dist/sthapathi/activity-log.d.ts +68 -0
- package/dist/sthapathi/activity-log.d.ts.map +1 -0
- package/dist/sthapathi/activity-log.js +57 -0
- package/dist/sthapathi/activity-log.js.map +1 -0
- package/dist/sthapathi/beads.d.ts +27 -0
- package/dist/sthapathi/beads.d.ts.map +1 -0
- package/dist/sthapathi/beads.js +153 -0
- package/dist/sthapathi/beads.js.map +1 -0
- package/dist/sthapathi/branch.d.ts +5 -0
- package/dist/sthapathi/branch.d.ts.map +1 -0
- package/dist/sthapathi/branch.js +20 -0
- package/dist/sthapathi/branch.js.map +1 -0
- package/dist/sthapathi/dispatch.d.ts +14 -0
- package/dist/sthapathi/dispatch.d.ts.map +1 -0
- package/dist/sthapathi/dispatch.js +326 -0
- package/dist/sthapathi/dispatch.js.map +1 -0
- package/dist/sthapathi/errors.d.ts +27 -0
- package/dist/sthapathi/errors.d.ts.map +1 -0
- package/dist/sthapathi/errors.js +174 -0
- package/dist/sthapathi/errors.js.map +1 -0
- package/dist/sthapathi/gh.d.ts +19 -0
- package/dist/sthapathi/gh.d.ts.map +1 -0
- package/dist/sthapathi/gh.js +69 -0
- package/dist/sthapathi/gh.js.map +1 -0
- package/dist/sthapathi/git.d.ts +41 -0
- package/dist/sthapathi/git.d.ts.map +1 -0
- package/dist/sthapathi/git.js +199 -0
- package/dist/sthapathi/git.js.map +1 -0
- package/dist/sthapathi/guard.d.ts +24 -0
- package/dist/sthapathi/guard.d.ts.map +1 -0
- package/dist/sthapathi/guard.js +64 -0
- package/dist/sthapathi/guard.js.map +1 -0
- package/dist/sthapathi/health.d.ts +23 -0
- package/dist/sthapathi/health.d.ts.map +1 -0
- package/dist/sthapathi/health.js +142 -0
- package/dist/sthapathi/health.js.map +1 -0
- package/dist/sthapathi/index.d.ts +21 -0
- package/dist/sthapathi/index.d.ts.map +1 -0
- package/dist/sthapathi/index.js +88 -0
- package/dist/sthapathi/index.js.map +1 -0
- package/dist/sthapathi/lifecycle.d.ts +7 -0
- package/dist/sthapathi/lifecycle.d.ts.map +1 -0
- package/dist/sthapathi/lifecycle.js +43 -0
- package/dist/sthapathi/lifecycle.js.map +1 -0
- package/dist/sthapathi/lint.d.ts +8 -0
- package/dist/sthapathi/lint.d.ts.map +1 -0
- package/dist/sthapathi/lint.js +33 -0
- package/dist/sthapathi/lint.js.map +1 -0
- package/dist/sthapathi/merge.d.ts +18 -0
- package/dist/sthapathi/merge.d.ts.map +1 -0
- package/dist/sthapathi/merge.js +259 -0
- package/dist/sthapathi/merge.js.map +1 -0
- package/dist/sthapathi/notifications.d.ts +14 -0
- package/dist/sthapathi/notifications.d.ts.map +1 -0
- package/dist/sthapathi/notifications.js +57 -0
- package/dist/sthapathi/notifications.js.map +1 -0
- package/dist/sthapathi/parikshaka-dispatch.d.ts +12 -0
- package/dist/sthapathi/parikshaka-dispatch.d.ts.map +1 -0
- package/dist/sthapathi/parikshaka-dispatch.js +0 -0
- package/dist/sthapathi/parikshaka-dispatch.js.map +1 -0
- package/dist/sthapathi/pickup.d.ts +13 -0
- package/dist/sthapathi/pickup.d.ts.map +1 -0
- package/dist/sthapathi/pickup.js +144 -0
- package/dist/sthapathi/pickup.js.map +1 -0
- package/dist/sthapathi/recover.d.ts +16 -0
- package/dist/sthapathi/recover.d.ts.map +1 -0
- package/dist/sthapathi/recover.js +149 -0
- package/dist/sthapathi/recover.js.map +1 -0
- package/dist/sthapathi/retry.d.ts +11 -0
- package/dist/sthapathi/retry.d.ts.map +1 -0
- package/dist/sthapathi/retry.js +42 -0
- package/dist/sthapathi/retry.js.map +1 -0
- package/dist/sthapathi/self-heal.d.ts +19 -0
- package/dist/sthapathi/self-heal.d.ts.map +1 -0
- package/dist/sthapathi/self-heal.js +46 -0
- package/dist/sthapathi/self-heal.js.map +1 -0
- package/dist/sthapathi/types.d.ts +56 -0
- package/dist/sthapathi/types.d.ts.map +1 -0
- package/dist/sthapathi/types.js +4 -0
- package/dist/sthapathi/types.js.map +1 -0
- package/dist/sthapathi/watchdog.d.ts +27 -0
- package/dist/sthapathi/watchdog.d.ts.map +1 -0
- package/dist/sthapathi/watchdog.js +145 -0
- package/dist/sthapathi/watchdog.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +42 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +189 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +16 -0
- package/dist/test-setup.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeLanguage = normalizeLanguage;
|
|
4
|
+
exports.profileFor = profileFor;
|
|
5
|
+
exports.resolveBuildCommand = resolveBuildCommand;
|
|
6
|
+
exports.resolveTestCommand = resolveTestCommand;
|
|
7
|
+
exports.resolveLintCommand = resolveLintCommand;
|
|
8
|
+
exports.resolveTestGlobs = resolveTestGlobs;
|
|
9
|
+
exports.resolveVendorDirs = resolveVendorDirs;
|
|
10
|
+
exports.splitCommand = splitCommand;
|
|
11
|
+
exports.matchesTestGlob = matchesTestGlob;
|
|
12
|
+
// Map a free-form stack.language string onto a profile key. Aliases keep common
|
|
13
|
+
// spellings (ts/js/golang/rs) pointing at the right ecosystem; anything we don't
|
|
14
|
+
// recognise falls to 'unknown' (skip-and-warn gates, never a wrong pnpm run).
|
|
15
|
+
function normalizeLanguage(language) {
|
|
16
|
+
const l = language.trim().toLowerCase();
|
|
17
|
+
if (['typescript', 'ts', 'javascript', 'js', 'node', 'nodejs'].includes(l))
|
|
18
|
+
return 'node';
|
|
19
|
+
if (['python', 'py'].includes(l))
|
|
20
|
+
return 'python';
|
|
21
|
+
if (['go', 'golang'].includes(l))
|
|
22
|
+
return 'go';
|
|
23
|
+
if (['rust', 'rs'].includes(l))
|
|
24
|
+
return 'rust';
|
|
25
|
+
if (['java'].includes(l))
|
|
26
|
+
return 'java';
|
|
27
|
+
return 'unknown';
|
|
28
|
+
}
|
|
29
|
+
// Non-node profiles are static. Node's command family depends on the package
|
|
30
|
+
// manager (pnpm/npm/yarn), so it is built per-config in nodeProfile().
|
|
31
|
+
const STATIC_PROFILES = {
|
|
32
|
+
// Many Python repos have no build step, so build defaults to skip (OQ3).
|
|
33
|
+
python: {
|
|
34
|
+
build: '',
|
|
35
|
+
test: 'pytest',
|
|
36
|
+
lint: 'ruff check',
|
|
37
|
+
testFileGlobs: ['test_*.py', '*_test.py'],
|
|
38
|
+
vendorDirs: ['.venv', '__pycache__'],
|
|
39
|
+
},
|
|
40
|
+
go: {
|
|
41
|
+
build: 'go build ./...',
|
|
42
|
+
test: 'go test ./...',
|
|
43
|
+
lint: 'go vet ./...',
|
|
44
|
+
testFileGlobs: ['*_test.go'],
|
|
45
|
+
vendorDirs: ['vendor'],
|
|
46
|
+
},
|
|
47
|
+
rust: {
|
|
48
|
+
build: 'cargo build',
|
|
49
|
+
test: 'cargo test',
|
|
50
|
+
lint: 'cargo clippy',
|
|
51
|
+
testFileGlobs: ['tests/**', '*_test.rs'],
|
|
52
|
+
vendorDirs: ['target'],
|
|
53
|
+
},
|
|
54
|
+
java: {
|
|
55
|
+
build: 'mvn -q compile',
|
|
56
|
+
test: 'mvn -q test',
|
|
57
|
+
lint: 'mvn -q checkstyle:check',
|
|
58
|
+
testFileGlobs: ['*Test.java'],
|
|
59
|
+
vendorDirs: ['target'],
|
|
60
|
+
},
|
|
61
|
+
// Unknown language: every command skips (visible warn), and we only refuse to
|
|
62
|
+
// descend into .git during the discovery walk.
|
|
63
|
+
unknown: {
|
|
64
|
+
build: '',
|
|
65
|
+
test: '',
|
|
66
|
+
lint: '',
|
|
67
|
+
testFileGlobs: [],
|
|
68
|
+
vendorDirs: ['.git'],
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
function nodeProfile(packageManager) {
|
|
72
|
+
const pm = packageManager.trim() || 'pnpm';
|
|
73
|
+
return {
|
|
74
|
+
build: `${pm} build`,
|
|
75
|
+
test: `${pm} test`,
|
|
76
|
+
lint: `${pm} lint`,
|
|
77
|
+
testFileGlobs: ['**/*.test.ts', '**/*.spec.ts', '**/*.test.js'],
|
|
78
|
+
vendorDirs: ['node_modules', 'dist'],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function profileFor(kshetra) {
|
|
82
|
+
const key = normalizeLanguage(kshetra.stack.language);
|
|
83
|
+
if (key === 'node')
|
|
84
|
+
return nodeProfile(kshetra.stack.packageManager ?? 'pnpm');
|
|
85
|
+
return STATIC_PROFILES[key];
|
|
86
|
+
}
|
|
87
|
+
// Resolve a command override: an explicit stack value (including "" for skip)
|
|
88
|
+
// wins; only when unset does the language default apply. Returned trimmed.
|
|
89
|
+
function resolveCommand(override, fallback) {
|
|
90
|
+
if (override !== undefined)
|
|
91
|
+
return override.trim();
|
|
92
|
+
return fallback;
|
|
93
|
+
}
|
|
94
|
+
// The authoritative compile/type-check gate (Viharapala). "" = skipped.
|
|
95
|
+
function resolveBuildCommand(kshetra) {
|
|
96
|
+
return resolveCommand(kshetra.stack.buildCommand, profileFor(kshetra).build);
|
|
97
|
+
}
|
|
98
|
+
// The authoritative test gate (health). "" = skipped.
|
|
99
|
+
function resolveTestCommand(kshetra) {
|
|
100
|
+
return resolveCommand(kshetra.stack.testRunner, profileFor(kshetra).test);
|
|
101
|
+
}
|
|
102
|
+
// The enforced lint gate (§3.3). "" = skipped; never synthesised for a repo
|
|
103
|
+
// that has no lint step.
|
|
104
|
+
function resolveLintCommand(kshetra) {
|
|
105
|
+
return resolveCommand(kshetra.stack.lintCommand, profileFor(kshetra).lint);
|
|
106
|
+
}
|
|
107
|
+
// Test-file globs for Parikshaka's static discovery walk. Config override wins.
|
|
108
|
+
function resolveTestGlobs(kshetra) {
|
|
109
|
+
return kshetra.stack.testFileGlobs ?? profileFor(kshetra).testFileGlobs;
|
|
110
|
+
}
|
|
111
|
+
// Directory names to skip when walking the repo. Config override wins.
|
|
112
|
+
function resolveVendorDirs(kshetra) {
|
|
113
|
+
return kshetra.stack.vendorDirs ?? profileFor(kshetra).vendorDirs;
|
|
114
|
+
}
|
|
115
|
+
// Split a command string into argv (space-delimited, as the gates run today).
|
|
116
|
+
// Empty/whitespace command yields [] so callers can detect "skip".
|
|
117
|
+
function splitCommand(command) {
|
|
118
|
+
const trimmed = command.trim();
|
|
119
|
+
return trimmed ? trimmed.split(/\s+/) : [];
|
|
120
|
+
}
|
|
121
|
+
// Translate a simple glob into an anchored RegExp. Supports `*` (any run of
|
|
122
|
+
// non-slash chars), a leading `**/` (zero or more directories — so
|
|
123
|
+
// `**/*.test.ts` also matches a root-level file), and a bare `**` (any run
|
|
124
|
+
// including slashes); other regex specials are escaped. Sentinels keep the `**`
|
|
125
|
+
// rewrites from being clobbered by the single-`*` step.
|
|
126
|
+
function globToRegExp(glob) {
|
|
127
|
+
const escaped = glob
|
|
128
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
129
|
+
.replace(/\*\*\//g, '@@DIRS@@')
|
|
130
|
+
.replace(/\*\*/g, '@@ANY@@')
|
|
131
|
+
.replace(/\*/g, '[^/]*')
|
|
132
|
+
.replace(/@@DIRS@@/g, '(?:.*/)?')
|
|
133
|
+
.replace(/@@ANY@@/g, '.*');
|
|
134
|
+
return new RegExp('^' + escaped + '$');
|
|
135
|
+
}
|
|
136
|
+
// True when a repo-relative path matches any of the test-file globs. Globs
|
|
137
|
+
// without a `/` match against the basename; globs with a `/` (or a `**/` prefix)
|
|
138
|
+
// match against the full repo-relative path.
|
|
139
|
+
function matchesTestGlob(relPath, globs) {
|
|
140
|
+
const base = relPath.split('/').pop() ?? relPath;
|
|
141
|
+
return globs.some(g => {
|
|
142
|
+
const re = globToRegExp(g);
|
|
143
|
+
return g.includes('/') ? re.test(relPath) : re.test(base);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=toolchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../../src/kshetra/toolchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { FastifyInstance } from 'fastify';
|
|
3
|
+
export declare const PHALAKA_VERSION = "1.0.0";
|
|
4
|
+
export declare const CountsSchema: z.ZodObject<{
|
|
5
|
+
open: z.ZodNumber;
|
|
6
|
+
in_progress: z.ZodNumber;
|
|
7
|
+
blocked: z.ZodNumber;
|
|
8
|
+
closed: z.ZodNumber;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export declare const StuckSchema: z.ZodObject<{
|
|
11
|
+
since: z.ZodString;
|
|
12
|
+
reason: z.ZodString;
|
|
13
|
+
remediation: z.ZodString;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export declare const KshetraSummarySchema: z.ZodObject<{
|
|
16
|
+
id: z.ZodString;
|
|
17
|
+
name: z.ZodString;
|
|
18
|
+
counts: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
open: z.ZodNumber;
|
|
20
|
+
in_progress: z.ZodNumber;
|
|
21
|
+
blocked: z.ZodNumber;
|
|
22
|
+
closed: z.ZodNumber;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
phase: z.ZodOptional<z.ZodString>;
|
|
25
|
+
paused: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
stuck: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
since: z.ZodString;
|
|
28
|
+
reason: z.ZodString;
|
|
29
|
+
remediation: z.ZodString;
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
error: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
export declare const KshetraListSchema: z.ZodArray<z.ZodObject<{
|
|
34
|
+
id: z.ZodString;
|
|
35
|
+
name: z.ZodString;
|
|
36
|
+
counts: z.ZodOptional<z.ZodObject<{
|
|
37
|
+
open: z.ZodNumber;
|
|
38
|
+
in_progress: z.ZodNumber;
|
|
39
|
+
blocked: z.ZodNumber;
|
|
40
|
+
closed: z.ZodNumber;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
phase: z.ZodOptional<z.ZodString>;
|
|
43
|
+
paused: z.ZodOptional<z.ZodBoolean>;
|
|
44
|
+
stuck: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
since: z.ZodString;
|
|
46
|
+
reason: z.ZodString;
|
|
47
|
+
remediation: z.ZodString;
|
|
48
|
+
}, z.core.$strip>>;
|
|
49
|
+
error: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, z.core.$strip>>;
|
|
51
|
+
export declare const BeadSummarySchema: z.ZodObject<{
|
|
52
|
+
id: z.ZodString;
|
|
53
|
+
title: z.ZodString;
|
|
54
|
+
status: z.ZodString;
|
|
55
|
+
priority: z.ZodNumber;
|
|
56
|
+
type: z.ZodString;
|
|
57
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
58
|
+
updatedAt: z.ZodString;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export declare const TaskListResponseSchema: z.ZodObject<{
|
|
61
|
+
kshetraId: z.ZodString;
|
|
62
|
+
tasks: z.ZodArray<z.ZodObject<{
|
|
63
|
+
id: z.ZodString;
|
|
64
|
+
title: z.ZodString;
|
|
65
|
+
status: z.ZodString;
|
|
66
|
+
priority: z.ZodNumber;
|
|
67
|
+
type: z.ZodString;
|
|
68
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
69
|
+
updatedAt: z.ZodString;
|
|
70
|
+
}, z.core.$strip>>;
|
|
71
|
+
error: z.ZodOptional<z.ZodString>;
|
|
72
|
+
}, z.core.$strip>;
|
|
73
|
+
export declare const BeadDependencySchema: z.ZodObject<{
|
|
74
|
+
id: z.ZodString;
|
|
75
|
+
title: z.ZodOptional<z.ZodString>;
|
|
76
|
+
type: z.ZodOptional<z.ZodString>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const BeadDetailSchema: z.ZodObject<{
|
|
79
|
+
id: z.ZodString;
|
|
80
|
+
title: z.ZodString;
|
|
81
|
+
status: z.ZodString;
|
|
82
|
+
priority: z.ZodNumber;
|
|
83
|
+
type: z.ZodString;
|
|
84
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
85
|
+
updatedAt: z.ZodString;
|
|
86
|
+
description: z.ZodOptional<z.ZodString>;
|
|
87
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
88
|
+
design: z.ZodOptional<z.ZodString>;
|
|
89
|
+
acceptance: z.ZodOptional<z.ZodString>;
|
|
90
|
+
createdAt: z.ZodString;
|
|
91
|
+
dependencies: z.ZodArray<z.ZodObject<{
|
|
92
|
+
id: z.ZodString;
|
|
93
|
+
title: z.ZodOptional<z.ZodString>;
|
|
94
|
+
type: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strip>>;
|
|
96
|
+
blockedBy: z.ZodArray<z.ZodString>;
|
|
97
|
+
parent: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
export declare const NotificationSchema: z.ZodObject<{
|
|
100
|
+
ts: z.ZodString;
|
|
101
|
+
event: z.ZodString;
|
|
102
|
+
beadId: z.ZodOptional<z.ZodString>;
|
|
103
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
104
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
105
|
+
message: z.ZodString;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
export declare const NotificationListResponseSchema: z.ZodObject<{
|
|
108
|
+
kshetraId: z.ZodString;
|
|
109
|
+
notifications: z.ZodArray<z.ZodObject<{
|
|
110
|
+
ts: z.ZodString;
|
|
111
|
+
event: z.ZodString;
|
|
112
|
+
beadId: z.ZodOptional<z.ZodString>;
|
|
113
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
114
|
+
remediation: z.ZodOptional<z.ZodString>;
|
|
115
|
+
message: z.ZodString;
|
|
116
|
+
}, z.core.$strip>>;
|
|
117
|
+
}, z.core.$strip>;
|
|
118
|
+
export declare const HealthSchema: z.ZodObject<{
|
|
119
|
+
ok: z.ZodLiteral<true>;
|
|
120
|
+
version: z.ZodString;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
export declare function registerPhalakaApi(app: FastifyInstance): void;
|
|
123
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/phalaka/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAQ7E,eAAO,MAAM,eAAe,UAAU,CAAC;AAIvC,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;iBAItB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;iBAW/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;kBAAgC,CAAC;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;;iBAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;iBAO7B,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;iBAGzC,CAAC;AAEH,eAAO,MAAM,YAAY;;;iBAAyD,CAAC;AA6DnF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAyD7D"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthSchema = exports.NotificationListResponseSchema = exports.NotificationSchema = exports.BeadDetailSchema = exports.BeadDependencySchema = exports.TaskListResponseSchema = exports.BeadSummarySchema = exports.KshetraListSchema = exports.KshetraSummarySchema = exports.StuckSchema = exports.CountsSchema = exports.PHALAKA_VERSION = void 0;
|
|
4
|
+
exports.registerPhalakaApi = registerPhalakaApi;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const registry_js_1 = require("../kshetra/registry.js");
|
|
7
|
+
const state_js_1 = require("../kshetra/state.js");
|
|
8
|
+
const token_js_1 = require("./token.js");
|
|
9
|
+
const beads_read_js_1 = require("./beads-read.js");
|
|
10
|
+
const notifications_js_1 = require("../sthapathi/notifications.js");
|
|
11
|
+
exports.PHALAKA_VERSION = '1.0.0';
|
|
12
|
+
// ── Response schemas (zod) ──────────────────────────────────────────────────
|
|
13
|
+
exports.CountsSchema = zod_1.z.object({
|
|
14
|
+
open: zod_1.z.number().int().nonnegative(),
|
|
15
|
+
in_progress: zod_1.z.number().int().nonnegative(),
|
|
16
|
+
blocked: zod_1.z.number().int().nonnegative(),
|
|
17
|
+
closed: zod_1.z.number().int().nonnegative(),
|
|
18
|
+
});
|
|
19
|
+
exports.StuckSchema = zod_1.z.object({
|
|
20
|
+
since: zod_1.z.string(),
|
|
21
|
+
reason: zod_1.z.string(),
|
|
22
|
+
remediation: zod_1.z.string(),
|
|
23
|
+
});
|
|
24
|
+
exports.KshetraSummarySchema = zod_1.z.object({
|
|
25
|
+
id: zod_1.z.string(),
|
|
26
|
+
name: zod_1.z.string(),
|
|
27
|
+
counts: exports.CountsSchema.optional(),
|
|
28
|
+
// Worker phase + health, from state.json — so the board shows what the worker
|
|
29
|
+
// is doing and, when stuck, why + how to fix it.
|
|
30
|
+
phase: zod_1.z.string().optional(),
|
|
31
|
+
paused: zod_1.z.boolean().optional(),
|
|
32
|
+
stuck: exports.StuckSchema.optional(),
|
|
33
|
+
// One Kshetra's broken beads DB surfaces here instead of blanking the board.
|
|
34
|
+
error: zod_1.z.string().optional(),
|
|
35
|
+
});
|
|
36
|
+
exports.KshetraListSchema = zod_1.z.array(exports.KshetraSummarySchema);
|
|
37
|
+
exports.BeadSummarySchema = zod_1.z.object({
|
|
38
|
+
id: zod_1.z.string(),
|
|
39
|
+
title: zod_1.z.string(),
|
|
40
|
+
status: zod_1.z.string(),
|
|
41
|
+
priority: zod_1.z.number(),
|
|
42
|
+
type: zod_1.z.string(),
|
|
43
|
+
assignee: zod_1.z.string().optional(),
|
|
44
|
+
updatedAt: zod_1.z.string(),
|
|
45
|
+
});
|
|
46
|
+
exports.TaskListResponseSchema = zod_1.z.object({
|
|
47
|
+
kshetraId: zod_1.z.string(),
|
|
48
|
+
tasks: zod_1.z.array(exports.BeadSummarySchema),
|
|
49
|
+
error: zod_1.z.string().optional(),
|
|
50
|
+
});
|
|
51
|
+
exports.BeadDependencySchema = zod_1.z.object({
|
|
52
|
+
id: zod_1.z.string(),
|
|
53
|
+
title: zod_1.z.string().optional(),
|
|
54
|
+
type: zod_1.z.string().optional(),
|
|
55
|
+
});
|
|
56
|
+
exports.BeadDetailSchema = exports.BeadSummarySchema.extend({
|
|
57
|
+
description: zod_1.z.string().optional(),
|
|
58
|
+
notes: zod_1.z.string().optional(),
|
|
59
|
+
design: zod_1.z.string().optional(),
|
|
60
|
+
acceptance: zod_1.z.string().optional(),
|
|
61
|
+
createdAt: zod_1.z.string(),
|
|
62
|
+
dependencies: zod_1.z.array(exports.BeadDependencySchema),
|
|
63
|
+
blockedBy: zod_1.z.array(zod_1.z.string()),
|
|
64
|
+
parent: zod_1.z.string().optional(),
|
|
65
|
+
});
|
|
66
|
+
exports.NotificationSchema = zod_1.z.object({
|
|
67
|
+
ts: zod_1.z.string(),
|
|
68
|
+
event: zod_1.z.string(),
|
|
69
|
+
beadId: zod_1.z.string().optional(),
|
|
70
|
+
reason: zod_1.z.string().optional(),
|
|
71
|
+
remediation: zod_1.z.string().optional(),
|
|
72
|
+
message: zod_1.z.string(),
|
|
73
|
+
});
|
|
74
|
+
exports.NotificationListResponseSchema = zod_1.z.object({
|
|
75
|
+
kshetraId: zod_1.z.string(),
|
|
76
|
+
notifications: zod_1.z.array(exports.NotificationSchema),
|
|
77
|
+
});
|
|
78
|
+
exports.HealthSchema = zod_1.z.object({ ok: zod_1.z.literal(true), version: zod_1.z.string() });
|
|
79
|
+
// ── Auth ────────────────────────────────────────────────────────────────────
|
|
80
|
+
function extractToken(req) {
|
|
81
|
+
const q = req.query?.token;
|
|
82
|
+
if (typeof q === 'string' && q.length > 0)
|
|
83
|
+
return q;
|
|
84
|
+
const auth = req.headers['authorization'];
|
|
85
|
+
if (typeof auth === 'string' && auth.startsWith('Bearer ')) {
|
|
86
|
+
const t = auth.slice('Bearer '.length).trim();
|
|
87
|
+
if (t.length > 0)
|
|
88
|
+
return t;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
// Returns true when the request is authorized; otherwise replies 401 and
|
|
93
|
+
// returns false so the handler can bail.
|
|
94
|
+
function requireToken(req, reply) {
|
|
95
|
+
const expected = (0, token_js_1.readToken)();
|
|
96
|
+
const provided = extractToken(req);
|
|
97
|
+
if (!expected || provided !== expected) {
|
|
98
|
+
reply.code(401).send({ error: 'unauthorized' });
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
// ── Data helpers ──────────────────────────────────────────────────────────────
|
|
104
|
+
function findKshetra(id) {
|
|
105
|
+
return (0, registry_js_1.loadRegistry)().find(k => k.id === id) ?? null;
|
|
106
|
+
}
|
|
107
|
+
async function summarizeKshetra(kshetra) {
|
|
108
|
+
try {
|
|
109
|
+
const reader = (0, beads_read_js_1.beadsRead)(kshetra);
|
|
110
|
+
// Active list (open/in_progress/blocked/deferred) + closed list, so the
|
|
111
|
+
// counts cover every status without a wide-open `bd list --all`.
|
|
112
|
+
const [active, closed] = await Promise.all([reader.list(), reader.list({ status: 'closed' })]);
|
|
113
|
+
const counts = { open: 0, in_progress: 0, blocked: 0, closed: closed.length };
|
|
114
|
+
for (const t of active) {
|
|
115
|
+
if (t.status === 'open')
|
|
116
|
+
counts.open++;
|
|
117
|
+
else if (t.status === 'in_progress')
|
|
118
|
+
counts.in_progress++;
|
|
119
|
+
else if (t.status === 'blocked')
|
|
120
|
+
counts.blocked++;
|
|
121
|
+
}
|
|
122
|
+
const ks = (0, state_js_1.loadState)().kshetras[kshetra.id];
|
|
123
|
+
return {
|
|
124
|
+
id: kshetra.id,
|
|
125
|
+
name: kshetra.name,
|
|
126
|
+
counts,
|
|
127
|
+
phase: ks?.phase,
|
|
128
|
+
paused: ks?.paused,
|
|
129
|
+
stuck: ks?.stuck ? { since: ks.stuck.since, reason: ks.stuck.reason, remediation: ks.stuck.remediation } : undefined,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
return { id: kshetra.id, name: kshetra.name, error: err instanceof Error ? err.message : String(err) };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ── Routes ────────────────────────────────────────────────────────────────────
|
|
137
|
+
function registerPhalakaApi(app) {
|
|
138
|
+
// Health is unauthenticated (carries no task data).
|
|
139
|
+
app.get('/api/health', async () => exports.HealthSchema.parse({ ok: true, version: exports.PHALAKA_VERSION }));
|
|
140
|
+
app.get('/api/kshetras', async (req, reply) => {
|
|
141
|
+
if (!requireToken(req, reply))
|
|
142
|
+
return;
|
|
143
|
+
const summaries = await Promise.all((0, registry_js_1.loadRegistry)().map(summarizeKshetra));
|
|
144
|
+
return exports.KshetraListSchema.parse(summaries);
|
|
145
|
+
});
|
|
146
|
+
app.get('/api/kshetras/:id/tasks', async (req, reply) => {
|
|
147
|
+
if (!requireToken(req, reply))
|
|
148
|
+
return;
|
|
149
|
+
const { id } = req.params;
|
|
150
|
+
const kshetra = findKshetra(id);
|
|
151
|
+
if (!kshetra)
|
|
152
|
+
return reply.code(404).send({ error: `unknown kshetra: ${id}` });
|
|
153
|
+
const status = req.query?.status;
|
|
154
|
+
const result = await (0, beads_read_js_1.readKshetraTasks)(kshetra, status ? { status } : {});
|
|
155
|
+
if ('error' in result) {
|
|
156
|
+
return exports.TaskListResponseSchema.parse({ kshetraId: id, tasks: [], error: result.error });
|
|
157
|
+
}
|
|
158
|
+
return exports.TaskListResponseSchema.parse({ kshetraId: id, tasks: result.tasks });
|
|
159
|
+
});
|
|
160
|
+
app.get('/api/kshetras/:id/notifications', async (req, reply) => {
|
|
161
|
+
if (!requireToken(req, reply))
|
|
162
|
+
return;
|
|
163
|
+
const { id } = req.params;
|
|
164
|
+
const kshetra = findKshetra(id);
|
|
165
|
+
if (!kshetra)
|
|
166
|
+
return reply.code(404).send({ error: `unknown kshetra: ${id}` });
|
|
167
|
+
const query = req.query;
|
|
168
|
+
const sinceTs = query?.since;
|
|
169
|
+
const parsedLimit = query?.limit !== undefined ? Number(query.limit) : undefined;
|
|
170
|
+
const limit = parsedLimit !== undefined && Number.isInteger(parsedLimit) && parsedLimit >= 0
|
|
171
|
+
? parsedLimit
|
|
172
|
+
: undefined;
|
|
173
|
+
const notifications = (0, notifications_js_1.readNotifications)(id, { sinceTs, limit });
|
|
174
|
+
return exports.NotificationListResponseSchema.parse({ kshetraId: id, notifications });
|
|
175
|
+
});
|
|
176
|
+
app.get('/api/kshetras/:id/tasks/:beadId', async (req, reply) => {
|
|
177
|
+
if (!requireToken(req, reply))
|
|
178
|
+
return;
|
|
179
|
+
const { id, beadId } = req.params;
|
|
180
|
+
const kshetra = findKshetra(id);
|
|
181
|
+
if (!kshetra)
|
|
182
|
+
return reply.code(404).send({ error: `unknown kshetra: ${id}` });
|
|
183
|
+
if (!(0, beads_read_js_1.isValidBeadId)(beadId))
|
|
184
|
+
return reply.code(400).send({ error: 'invalid bead id' });
|
|
185
|
+
try {
|
|
186
|
+
const detail = await (0, beads_read_js_1.beadsRead)(kshetra).show(beadId);
|
|
187
|
+
if (!detail)
|
|
188
|
+
return reply.code(404).send({ error: `unknown bead: ${beadId}` });
|
|
189
|
+
return exports.BeadDetailSchema.parse(detail);
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
return reply.code(502).send({ error: err instanceof Error ? err.message : String(err) });
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/phalaka/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { KshetraConfig } from '../kshetra/config.js';
|
|
2
|
+
export declare const LIST_CACHE_TTL_MS = 5000;
|
|
3
|
+
export declare class BeadsReadError extends Error {
|
|
4
|
+
readonly cause?: unknown | undefined;
|
|
5
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
6
|
+
}
|
|
7
|
+
export declare function isValidBeadId(id: string): boolean;
|
|
8
|
+
export interface BeadSummary {
|
|
9
|
+
id: string;
|
|
10
|
+
title: string;
|
|
11
|
+
status: string;
|
|
12
|
+
priority: number;
|
|
13
|
+
type: string;
|
|
14
|
+
assignee?: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
}
|
|
17
|
+
export interface BeadDependency {
|
|
18
|
+
id: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
type?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface BeadDetail extends BeadSummary {
|
|
23
|
+
description?: string;
|
|
24
|
+
notes?: string;
|
|
25
|
+
design?: string;
|
|
26
|
+
acceptance?: string;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
dependencies: BeadDependency[];
|
|
29
|
+
blockedBy: string[];
|
|
30
|
+
parent?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function clearBeadsReadCache(): void;
|
|
33
|
+
export interface ListFilters {
|
|
34
|
+
status?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function beadsRead(kshetra: KshetraConfig): {
|
|
37
|
+
list(filters?: ListFilters): Promise<BeadSummary[]>;
|
|
38
|
+
show(id: string): Promise<BeadDetail | null>;
|
|
39
|
+
};
|
|
40
|
+
export type KshetraTasksResult = {
|
|
41
|
+
kshetra: KshetraConfig;
|
|
42
|
+
tasks: BeadSummary[];
|
|
43
|
+
} | {
|
|
44
|
+
kshetra: KshetraConfig;
|
|
45
|
+
error: string;
|
|
46
|
+
};
|
|
47
|
+
export declare function readKshetraTasks(kshetra: KshetraConfig, filters?: ListFilters): Promise<KshetraTasksResult>;
|
|
48
|
+
export declare function readAllKshetraTasks(kshetras: KshetraConfig[], filters?: ListFilters): Promise<KshetraTasksResult[]>;
|
|
49
|
+
//# sourceMappingURL=beads-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-read.d.ts","sourceRoot":"","sources":["../../src/phalaka/beads-read.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1D,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AAEvC,qBAAa,cAAe,SAAQ,KAAK;aAGrB,KAAK,CAAC,EAAE,OAAO;gBAD/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAMD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEjD;AAID,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiGD,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAsBD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa;mBAKxB,WAAW,GAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;aAO9C,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;EAYrD;AAQD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAO7B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAE/B"}
|