claude-comms 1.0.34 → 1.0.36
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/.agents/AGENTS.md +6 -6
- package/.agents/repo.md +10 -24
- package/.agents/tools/agent-job/README.md +208 -0
- package/.agents/tools/agent-job/agent_job.py +858 -0
- package/.agents/tools/agent-job/agent_monitor.py +575 -0
- package/{.claude/agents/core/consultant.md → .agents/tools/agent-job/consultant_template.txt} +14 -72
- package/.claude/agents/core/consultants/codex.md +39 -0
- package/.claude/agents/core/consultants/gemini.md +39 -0
- package/.claude/agents/core/designer.md +1 -1
- package/.claude/agents/core/engineer.md +1 -1
- package/.claude/agents/core/uat.md +1 -1
- package/.claude/commands/analyse-document.md +1 -1
- package/.claude/commands/cook.md +8 -10
- package/.claude/commands/install-feedback-widget.md +74 -42
- package/.claude/commands/learn.md +1 -1
- package/CLAUDE.md +9 -11
- package/package.json +1 -1
- package/src/fetcher/github.js +45 -9
package/src/fetcher/github.js
CHANGED
|
@@ -332,6 +332,10 @@ class GitHubFetcher extends EventEmitter {
|
|
|
332
332
|
// Observability hooks
|
|
333
333
|
'.claude/hooks/observability/send_event.py',
|
|
334
334
|
|
|
335
|
+
// Agents directory
|
|
336
|
+
'.agents/AGENTS.md',
|
|
337
|
+
'.agents/repo.md',
|
|
338
|
+
|
|
335
339
|
// Root CLAUDE.md
|
|
336
340
|
'CLAUDE.md'
|
|
337
341
|
];
|
|
@@ -339,7 +343,10 @@ class GitHubFetcher extends EventEmitter {
|
|
|
339
343
|
const files = [];
|
|
340
344
|
|
|
341
345
|
for (const filePath of knownFiles) {
|
|
342
|
-
if (filePath.startsWith(path) ||
|
|
346
|
+
if (filePath.startsWith(path) ||
|
|
347
|
+
(path === '.claude' && filePath.startsWith('.claude')) ||
|
|
348
|
+
(path === '.agents' && filePath.startsWith('.agents')) ||
|
|
349
|
+
(path === 'CLAUDE.md' && filePath === 'CLAUDE.md')) {
|
|
343
350
|
try {
|
|
344
351
|
const content = await this._fetchSingleFileRaw(filePath, options);
|
|
345
352
|
files.push(content);
|
|
@@ -867,6 +874,12 @@ class GitHubFetcher extends EventEmitter {
|
|
|
867
874
|
type: 'dir',
|
|
868
875
|
children: [],
|
|
869
876
|
files: []
|
|
877
|
+
},
|
|
878
|
+
'.agents': {
|
|
879
|
+
path: '.agents',
|
|
880
|
+
type: 'dir',
|
|
881
|
+
children: [],
|
|
882
|
+
files: []
|
|
870
883
|
}
|
|
871
884
|
};
|
|
872
885
|
|
|
@@ -899,18 +912,19 @@ class GitHubFetcher extends EventEmitter {
|
|
|
899
912
|
|
|
900
913
|
// Only extract files we care about
|
|
901
914
|
const isClaudeFile = actualPath.startsWith('.claude/') || actualPath === '.claude';
|
|
915
|
+
const isAgentsFile = actualPath.startsWith('.agents/') || actualPath === '.agents';
|
|
902
916
|
const isClaudeMd = actualPath === 'CLAUDE.md';
|
|
903
917
|
|
|
904
|
-
console.log(`DEBUG: ${actualPath} -> claude: ${isClaudeFile}, md: ${isClaudeMd}, type: ${entry.type}`);
|
|
918
|
+
console.log(`DEBUG: ${actualPath} -> claude: ${isClaudeFile}, agents: ${isAgentsFile}, md: ${isClaudeMd}, type: ${entry.type}`);
|
|
905
919
|
|
|
906
|
-
if ((isClaudeFile || isClaudeMd) && entry.type === 'File') {
|
|
920
|
+
if ((isClaudeFile || isAgentsFile || isClaudeMd) && entry.type === 'File') {
|
|
907
921
|
wantedFiles.set(filePath, actualPath);
|
|
908
922
|
console.log(`DEBUG: Will extract: ${filePath} -> ${actualPath}`);
|
|
909
923
|
return true;
|
|
910
924
|
}
|
|
911
925
|
|
|
912
|
-
// Also allow .claude directories to be processed for their children
|
|
913
|
-
if (isClaudeFile && entry.type === 'Directory') {
|
|
926
|
+
// Also allow .claude and .agents directories to be processed for their children
|
|
927
|
+
if ((isClaudeFile || isAgentsFile) && entry.type === 'Directory') {
|
|
914
928
|
return true;
|
|
915
929
|
}
|
|
916
930
|
|
|
@@ -964,6 +978,21 @@ class GitHubFetcher extends EventEmitter {
|
|
|
964
978
|
// Build directory structure for compatibility
|
|
965
979
|
const relativePath = actualPath.slice('.claude/'.length);
|
|
966
980
|
this._addToDirectoryStructure(extractedFiles['.claude'], relativePath, fileObj);
|
|
981
|
+
} else if (actualPath.startsWith('.agents/')) {
|
|
982
|
+
// Add to .agents files
|
|
983
|
+
const fileObj = {
|
|
984
|
+
path: actualPath,
|
|
985
|
+
content: content,
|
|
986
|
+
encoding: 'utf-8',
|
|
987
|
+
type: 'file'
|
|
988
|
+
};
|
|
989
|
+
|
|
990
|
+
extractedFiles['.agents'].files.push(fileObj);
|
|
991
|
+
console.log(`DEBUG: Added ${actualPath} to .agents files (${extractedFiles['.agents'].files.length} total)`);
|
|
992
|
+
|
|
993
|
+
// Build directory structure for compatibility
|
|
994
|
+
const relativePath = actualPath.slice('.agents/'.length);
|
|
995
|
+
this._addToDirectoryStructure(extractedFiles['.agents'], relativePath, fileObj);
|
|
967
996
|
}
|
|
968
997
|
}
|
|
969
998
|
} catch (fileError) {
|
|
@@ -972,7 +1001,7 @@ class GitHubFetcher extends EventEmitter {
|
|
|
972
1001
|
}
|
|
973
1002
|
}
|
|
974
1003
|
|
|
975
|
-
console.log(`DEBUG: Final result - .claude has ${extractedFiles['.claude'].files.length} files, CLAUDE.md: ${extractedFiles['CLAUDE.md'] ? 'present' : 'missing'}`);
|
|
1004
|
+
console.log(`DEBUG: Final result - .claude has ${extractedFiles['.claude'].files.length} files, .agents has ${extractedFiles['.agents'].files.length} files, CLAUDE.md: ${extractedFiles['CLAUDE.md'] ? 'present' : 'missing'}`);
|
|
976
1005
|
|
|
977
1006
|
// Clean up temp directory
|
|
978
1007
|
try {
|
|
@@ -1059,8 +1088,13 @@ async function fetchRepository(gitRef = 'main', options = {}) {
|
|
|
1059
1088
|
|
|
1060
1089
|
return {
|
|
1061
1090
|
claudeDirectory: tarballFiles['.claude'],
|
|
1091
|
+
agentsDirectory: tarballFiles['.agents'],
|
|
1062
1092
|
claudeFile: tarballFiles['CLAUDE.md'],
|
|
1063
|
-
files: [
|
|
1093
|
+
files: [
|
|
1094
|
+
...(tarballFiles['.claude'].files || []),
|
|
1095
|
+
...(tarballFiles['.agents'].files || []),
|
|
1096
|
+
tarballFiles['CLAUDE.md']
|
|
1097
|
+
]
|
|
1064
1098
|
};
|
|
1065
1099
|
|
|
1066
1100
|
} catch (tarballError) {
|
|
@@ -1069,15 +1103,17 @@ async function fetchRepository(gitRef = 'main', options = {}) {
|
|
|
1069
1103
|
|
|
1070
1104
|
try {
|
|
1071
1105
|
// Strategy 2: Individual file fetch (fallback)
|
|
1072
|
-
const [claudeDir, claudeMd] = await Promise.all([
|
|
1106
|
+
const [claudeDir, agentsDir, claudeMd] = await Promise.all([
|
|
1073
1107
|
fetcher.fetchDirectory('.claude', { version: gitRef }),
|
|
1108
|
+
fetcher.fetchDirectory('.agents', { version: gitRef }),
|
|
1074
1109
|
fetcher.fetchFile('CLAUDE.md', { version: gitRef })
|
|
1075
1110
|
]);
|
|
1076
1111
|
|
|
1077
1112
|
return {
|
|
1078
1113
|
claudeDirectory: claudeDir,
|
|
1114
|
+
agentsDirectory: agentsDir,
|
|
1079
1115
|
claudeFile: claudeMd,
|
|
1080
|
-
files: [...(claudeDir.files || []), claudeMd]
|
|
1116
|
+
files: [...(claudeDir.files || []), ...(agentsDir.files || []), claudeMd]
|
|
1081
1117
|
};
|
|
1082
1118
|
|
|
1083
1119
|
} catch (fallbackError) {
|