create-ironclaws 1.0.3 → 1.0.4
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/package.json +1 -1
- package/template/src/index.ts +23 -2
package/package.json
CHANGED
package/template/src/index.ts
CHANGED
|
@@ -647,6 +647,7 @@ function autoRegisterAgentsFromYaml(): void {
|
|
|
647
647
|
is_main?: boolean;
|
|
648
648
|
onecli_secrets?: string[];
|
|
649
649
|
onecli_id?: string;
|
|
650
|
+
container_config?: import('./types.js').ContainerConfig;
|
|
650
651
|
}>;
|
|
651
652
|
|
|
652
653
|
try {
|
|
@@ -676,6 +677,7 @@ function autoRegisterAgentsFromYaml(): void {
|
|
|
676
677
|
added_at: new Date().toISOString(),
|
|
677
678
|
requiresTrigger: def.requires_trigger !== false,
|
|
678
679
|
isMain: def.is_main === true,
|
|
680
|
+
...(def.container_config ? { containerConfig: def.container_config } : {}),
|
|
679
681
|
};
|
|
680
682
|
|
|
681
683
|
setRegisteredGroup(jid, group);
|
|
@@ -714,13 +716,32 @@ function ensureOneCLISecrets(): void {
|
|
|
714
716
|
const secretsScript = path.join(process.cwd(), 'scripts', 'setup-onecli-secrets.sh');
|
|
715
717
|
if (!fs.existsSync(secretsScript)) return;
|
|
716
718
|
|
|
717
|
-
// Hash
|
|
719
|
+
// Hash two things:
|
|
720
|
+
// 1. Credential-bearing env vars (re-run when secrets rotate)
|
|
721
|
+
// 2. onecli_secrets from agents.yaml (re-run when an agent's secret list changes)
|
|
718
722
|
const credentialKeys = [
|
|
719
723
|
'ELASTIC_API_KEY', 'JIRA_EMAIL', 'JIRA_API_TOKEN',
|
|
720
724
|
'SLACK_BOT_TOKEN', 'INTERCOM_ACCESS_TOKEN', 'ARDOQ_API_KEY',
|
|
721
725
|
'ANTHROPIC_AUTH_TOKEN', 'CONFLUENCE_USERNAME', 'CONFLUENCE_PASSWORD',
|
|
726
|
+
'XLEDGER_API_TOKEN',
|
|
722
727
|
];
|
|
723
|
-
const
|
|
728
|
+
const envHash = credentialKeys.map(k => `${k}=${process.env[k] || ''}`).join('\n');
|
|
729
|
+
|
|
730
|
+
// Include agents.yaml onecli_secrets so adding/removing a secret triggers re-run
|
|
731
|
+
let agentsSecretsSig = '';
|
|
732
|
+
try {
|
|
733
|
+
const agentsYaml = path.join(process.cwd(), 'agents.yaml');
|
|
734
|
+
if (fs.existsSync(agentsYaml)) {
|
|
735
|
+
const defs = YAML.parse(fs.readFileSync(agentsYaml, 'utf-8')).agents || [];
|
|
736
|
+
agentsSecretsSig = defs
|
|
737
|
+
.map((d: { folder: string; onecli_secrets?: string[] }) =>
|
|
738
|
+
`${d.folder}:${(d.onecli_secrets || []).sort().join(',')}`)
|
|
739
|
+
.sort()
|
|
740
|
+
.join('\n');
|
|
741
|
+
}
|
|
742
|
+
} catch { /* non-fatal — env hash alone is still useful */ }
|
|
743
|
+
|
|
744
|
+
const hashInput = envHash + '\n---agents---\n' + agentsSecretsSig;
|
|
724
745
|
const currentHash = crypto.createHash('sha256').update(hashInput).digest('hex');
|
|
725
746
|
|
|
726
747
|
const hashFile = path.join(STORE_DIR, 'onecli-secrets.hash');
|