MCPcopy Create free account
hub / github.com/SethGammon/Citadel / main

Function main

scripts/loops.js:132–191  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

130}
131
132function main() {
133 const mode = process.argv[2] || 'list';
134 const root = projectRoot();
135 const json = hasFlag('--json');
136
137 if (mode === '--help' || mode === '-h') {
138 process.stdout.write(`${usage()}\n`);
139 return;
140 }
141
142 if (mode === 'list' || mode === 'status') {
143 const loops = listLoops(root, { activeOnly: hasFlag('--active') });
144 if (json) printJson(loops);
145 else process.stdout.write(renderList(loops));
146 return;
147 }
148
149 if (mode === 'inspect') {
150 const id = process.argv[3];
151 const loop = readLoop(root, id) || listLoops(root).find((item) => item.id === id);
152 if (json) printJson(loop || null);
153 else process.stdout.write(renderInspect(loop));
154 process.exit(loop ? 0 : 1);
155 }
156
157 if (mode === 'templates') {
158 const templates = listLoopTemplates();
159 if (json) printJson(templates);
160 else process.stdout.write(renderTemplates());
161 return;
162 }
163
164 if (mode === 'plan' || mode === 'register') {
165 const contract = contractFromArgs();
166 const shouldWrite = hasFlag('--write') || mode === 'register';
167 const result = shouldWrite ? registerLoop(root, contract) : contract;
168 if (json) printJson(result);
169 else {
170 process.stdout.write(`${shouldWrite ? 'Loop registered' : 'Loop plan'}: ${result.id}\n`);
171 process.stdout.write(`State: ${result.statePath}\n`);
172 process.stdout.write(`Verifier: ${result.verifier.command || result.verifier.profile || '(none)'}\n`);
173 }
174 return;
175 }
176
177 if (mode === 'stop') {
178 const id = process.argv[3];
179 if (!id) {
180 process.stderr.write('Missing loop id.\n');
181 process.exit(1);
182 }
183 const result = stopLoop(root, id, arg('--status', 'stopped'), arg('--reason', 'user-stop'));
184 if (json) printJson(result);
185 else process.stdout.write(`Stopped ${id}: ${result.status}\n`);
186 return;
187 }
188
189 process.stderr.write(`${usage()}\n`);

Callers 1

loops.jsFile · 0.70

Calls 14

projectRootFunction · 0.85
listLoopsFunction · 0.85
printJsonFunction · 0.85
readLoopFunction · 0.85
renderInspectFunction · 0.85
listLoopTemplatesFunction · 0.85
renderTemplatesFunction · 0.85
contractFromArgsFunction · 0.85
registerLoopFunction · 0.85
stopLoopFunction · 0.85
hasFlagFunction · 0.70
usageFunction · 0.70

Tested by

no test coverage detected