dot-agents 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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +238 -0
  3. package/dist/cli/commands/daemon.d.ts +3 -0
  4. package/dist/cli/commands/daemon.d.ts.map +1 -0
  5. package/dist/cli/commands/daemon.js +179 -0
  6. package/dist/cli/commands/daemon.js.map +1 -0
  7. package/dist/cli/commands/index.d.ts +6 -0
  8. package/dist/cli/commands/index.d.ts.map +1 -0
  9. package/dist/cli/commands/index.js +6 -0
  10. package/dist/cli/commands/index.js.map +1 -0
  11. package/dist/cli/commands/list.d.ts +3 -0
  12. package/dist/cli/commands/list.d.ts.map +1 -0
  13. package/dist/cli/commands/list.js +100 -0
  14. package/dist/cli/commands/list.js.map +1 -0
  15. package/dist/cli/commands/run.d.ts +3 -0
  16. package/dist/cli/commands/run.d.ts.map +1 -0
  17. package/dist/cli/commands/run.js +107 -0
  18. package/dist/cli/commands/run.js.map +1 -0
  19. package/dist/cli/commands/schedule.d.ts +3 -0
  20. package/dist/cli/commands/schedule.d.ts.map +1 -0
  21. package/dist/cli/commands/schedule.js +172 -0
  22. package/dist/cli/commands/schedule.js.map +1 -0
  23. package/dist/cli/commands/show.d.ts +3 -0
  24. package/dist/cli/commands/show.d.ts.map +1 -0
  25. package/dist/cli/commands/show.js +122 -0
  26. package/dist/cli/commands/show.js.map +1 -0
  27. package/dist/cli/index.d.ts +3 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +38 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/cli/lib/index.d.ts +2 -0
  32. package/dist/cli/lib/index.d.ts.map +1 -0
  33. package/dist/cli/lib/index.js +2 -0
  34. package/dist/cli/lib/index.js.map +1 -0
  35. package/dist/cli/lib/runner.d.ts +41 -0
  36. package/dist/cli/lib/runner.d.ts.map +1 -0
  37. package/dist/cli/lib/runner.js +179 -0
  38. package/dist/cli/lib/runner.js.map +1 -0
  39. package/dist/daemon/api/index.d.ts +2 -0
  40. package/dist/daemon/api/index.d.ts.map +1 -0
  41. package/dist/daemon/api/index.js +2 -0
  42. package/dist/daemon/api/index.js.map +1 -0
  43. package/dist/daemon/api/server.d.ts +12 -0
  44. package/dist/daemon/api/server.d.ts.map +1 -0
  45. package/dist/daemon/api/server.js +111 -0
  46. package/dist/daemon/api/server.js.map +1 -0
  47. package/dist/daemon/daemon.d.ts +95 -0
  48. package/dist/daemon/daemon.d.ts.map +1 -0
  49. package/dist/daemon/daemon.js +265 -0
  50. package/dist/daemon/daemon.js.map +1 -0
  51. package/dist/daemon/index.d.ts +4 -0
  52. package/dist/daemon/index.d.ts.map +1 -0
  53. package/dist/daemon/index.js +4 -0
  54. package/dist/daemon/index.js.map +1 -0
  55. package/dist/daemon/lib/executor.d.ts +17 -0
  56. package/dist/daemon/lib/executor.d.ts.map +1 -0
  57. package/dist/daemon/lib/executor.js +169 -0
  58. package/dist/daemon/lib/executor.js.map +1 -0
  59. package/dist/daemon/lib/index.d.ts +4 -0
  60. package/dist/daemon/lib/index.d.ts.map +1 -0
  61. package/dist/daemon/lib/index.js +4 -0
  62. package/dist/daemon/lib/index.js.map +1 -0
  63. package/dist/daemon/lib/scheduler.d.ts +90 -0
  64. package/dist/daemon/lib/scheduler.d.ts.map +1 -0
  65. package/dist/daemon/lib/scheduler.js +176 -0
  66. package/dist/daemon/lib/scheduler.js.map +1 -0
  67. package/dist/daemon/lib/watcher.d.ts +48 -0
  68. package/dist/daemon/lib/watcher.d.ts.map +1 -0
  69. package/dist/daemon/lib/watcher.js +77 -0
  70. package/dist/daemon/lib/watcher.js.map +1 -0
  71. package/dist/lib/config.d.ts +14 -0
  72. package/dist/lib/config.d.ts.map +1 -0
  73. package/dist/lib/config.js +76 -0
  74. package/dist/lib/config.js.map +1 -0
  75. package/dist/lib/frontmatter.d.ts +18 -0
  76. package/dist/lib/frontmatter.d.ts.map +1 -0
  77. package/dist/lib/frontmatter.js +26 -0
  78. package/dist/lib/frontmatter.js.map +1 -0
  79. package/dist/lib/index.d.ts +7 -0
  80. package/dist/lib/index.d.ts.map +1 -0
  81. package/dist/lib/index.js +9 -0
  82. package/dist/lib/index.js.map +1 -0
  83. package/dist/lib/persona.d.ts +32 -0
  84. package/dist/lib/persona.d.ts.map +1 -0
  85. package/dist/lib/persona.js +177 -0
  86. package/dist/lib/persona.js.map +1 -0
  87. package/dist/lib/types/index.d.ts +69 -0
  88. package/dist/lib/types/index.d.ts.map +1 -0
  89. package/dist/lib/types/index.js +4 -0
  90. package/dist/lib/types/index.js.map +1 -0
  91. package/dist/lib/types/persona.d.ts +46 -0
  92. package/dist/lib/types/persona.d.ts.map +1 -0
  93. package/dist/lib/types/persona.js +2 -0
  94. package/dist/lib/types/persona.js.map +1 -0
  95. package/dist/lib/types/triggers.d.ts +96 -0
  96. package/dist/lib/types/triggers.d.ts.map +1 -0
  97. package/dist/lib/types/triggers.js +2 -0
  98. package/dist/lib/types/triggers.js.map +1 -0
  99. package/dist/lib/types/workflow.d.ts +75 -0
  100. package/dist/lib/types/workflow.d.ts.map +1 -0
  101. package/dist/lib/types/workflow.js +2 -0
  102. package/dist/lib/types/workflow.js.map +1 -0
  103. package/dist/lib/variables.d.ts +28 -0
  104. package/dist/lib/variables.d.ts.map +1 -0
  105. package/dist/lib/variables.js +113 -0
  106. package/dist/lib/variables.js.map +1 -0
  107. package/dist/lib/workflow.d.ts +29 -0
  108. package/dist/lib/workflow.d.ts.map +1 -0
  109. package/dist/lib/workflow.js +155 -0
  110. package/dist/lib/workflow.js.map +1 -0
  111. package/package.json +71 -0
@@ -0,0 +1,176 @@
1
+ import { CronJob } from "cron";
2
+ import { EventEmitter } from "node:events";
3
+ /**
4
+ * Scheduler for workflow cron jobs
5
+ */
6
+ export class Scheduler extends EventEmitter {
7
+ jobs = new Map();
8
+ jobInfo = new Map();
9
+ workflows = new Map();
10
+ running = false;
11
+ constructor() {
12
+ super();
13
+ }
14
+ /**
15
+ * Start the scheduler
16
+ */
17
+ start() {
18
+ if (this.running)
19
+ return;
20
+ this.running = true;
21
+ for (const job of this.jobs.values()) {
22
+ job.start();
23
+ }
24
+ this.emit("scheduler:started");
25
+ }
26
+ /**
27
+ * Stop the scheduler
28
+ */
29
+ stop() {
30
+ if (!this.running)
31
+ return;
32
+ this.running = false;
33
+ for (const job of this.jobs.values()) {
34
+ job.stop();
35
+ }
36
+ this.emit("scheduler:stopped");
37
+ }
38
+ /**
39
+ * Add a workflow's schedules to the scheduler
40
+ */
41
+ addWorkflow(workflow) {
42
+ this.workflows.set(workflow.name, workflow);
43
+ if (!workflow.on?.schedule)
44
+ return;
45
+ for (let i = 0; i < workflow.on.schedule.length; i++) {
46
+ const schedule = workflow.on.schedule[i];
47
+ const jobId = `${workflow.name}:${i}`;
48
+ const jobInfo = {
49
+ id: jobId,
50
+ workflowName: workflow.name,
51
+ cron: schedule.cron,
52
+ nextRun: null,
53
+ lastRun: null,
54
+ lastStatus: null,
55
+ inputs: schedule.inputs,
56
+ };
57
+ const cronJob = new CronJob(schedule.cron, () => this.triggerJob(jobId), null, this.running);
58
+ this.jobs.set(jobId, cronJob);
59
+ this.jobInfo.set(jobId, jobInfo);
60
+ // Update next run time
61
+ jobInfo.nextRun = cronJob.nextDate().toJSDate();
62
+ this.emit("job:added", { job: jobInfo });
63
+ }
64
+ }
65
+ /**
66
+ * Remove a workflow's schedules from the scheduler
67
+ */
68
+ removeWorkflow(workflowName) {
69
+ this.workflows.delete(workflowName);
70
+ for (const [jobId, job] of this.jobs.entries()) {
71
+ if (jobId.startsWith(`${workflowName}:`)) {
72
+ job.stop();
73
+ this.jobs.delete(jobId);
74
+ this.jobInfo.delete(jobId);
75
+ this.emit("job:removed", { jobId });
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * Reload a workflow (remove and re-add)
81
+ */
82
+ reloadWorkflow(workflow) {
83
+ this.removeWorkflow(workflow.name);
84
+ this.addWorkflow(workflow);
85
+ }
86
+ /**
87
+ * Get all scheduled jobs
88
+ */
89
+ getJobs() {
90
+ const jobs = [];
91
+ for (const [jobId, cronJob] of this.jobs.entries()) {
92
+ const info = this.jobInfo.get(jobId);
93
+ if (info) {
94
+ // Update next run time
95
+ info.nextRun = cronJob.nextDate().toJSDate();
96
+ jobs.push(info);
97
+ }
98
+ }
99
+ return jobs.sort((a, b) => {
100
+ if (!a.nextRun)
101
+ return 1;
102
+ if (!b.nextRun)
103
+ return -1;
104
+ return a.nextRun.getTime() - b.nextRun.getTime();
105
+ });
106
+ }
107
+ /**
108
+ * Get a specific job by ID
109
+ */
110
+ getJob(jobId) {
111
+ return this.jobInfo.get(jobId) ?? null;
112
+ }
113
+ /**
114
+ * Manually trigger a job
115
+ */
116
+ triggerJob(jobId) {
117
+ const info = this.jobInfo.get(jobId);
118
+ if (!info)
119
+ return;
120
+ const workflow = this.workflows.get(info.workflowName);
121
+ if (!workflow)
122
+ return;
123
+ info.lastRun = new Date();
124
+ this.emit("job:trigger", { job: info, workflow });
125
+ }
126
+ /**
127
+ * Manually trigger a workflow by name
128
+ */
129
+ triggerWorkflow(workflowName) {
130
+ const workflow = this.workflows.get(workflowName);
131
+ if (!workflow)
132
+ return false;
133
+ // Find the first job for this workflow, or create a one-off trigger
134
+ for (const [jobId, info] of this.jobInfo.entries()) {
135
+ if (info.workflowName === workflowName) {
136
+ this.triggerJob(jobId);
137
+ return true;
138
+ }
139
+ }
140
+ // No scheduled job, but workflow exists - emit trigger anyway
141
+ this.emit("job:trigger", {
142
+ job: {
143
+ id: `${workflowName}:manual`,
144
+ workflowName,
145
+ cron: "manual",
146
+ nextRun: null,
147
+ lastRun: new Date(),
148
+ lastStatus: null,
149
+ },
150
+ workflow,
151
+ });
152
+ return true;
153
+ }
154
+ /**
155
+ * Update job status after execution
156
+ */
157
+ updateJobStatus(jobId, success) {
158
+ const info = this.jobInfo.get(jobId);
159
+ if (info) {
160
+ info.lastStatus = success ? "success" : "failure";
161
+ }
162
+ }
163
+ /**
164
+ * Check if scheduler is running
165
+ */
166
+ isRunning() {
167
+ return this.running;
168
+ }
169
+ /**
170
+ * Get count of scheduled jobs
171
+ */
172
+ getJobCount() {
173
+ return this.jobs.size;
174
+ }
175
+ }
176
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/daemon/lib/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2B3C;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IACjC,IAAI,GAAyB,IAAI,GAAG,EAAE,CAAC;IACvC,OAAO,GAA8B,IAAI,GAAG,EAAE,CAAC;IAC/C,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC;IAExB;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAkB;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ;YAAE,OAAO;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,KAAK;gBACT,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,QAAQ,CAAC,IAAI,EACb,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAC5B,IAAI,EACJ,IAAI,CAAC,OAAO,CACb,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEjC,uBAAuB;YACvB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;YAEhD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,YAAoB;QACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEpC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAkB;QAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,MAAM,IAAI,GAAmB,EAAE,CAAC;QAEhC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE,CAAC;gBACT,uBAAuB;gBACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC;YACzB,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAa;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,YAAoB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5B,oEAAoE;QACpE,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,GAAG,EAAE;gBACH,EAAE,EAAE,GAAG,YAAY,SAAS;gBAC5B,YAAY;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,IAAI,EAAE;gBACnB,UAAU,EAAE,IAAI;aACjB;YACD,QAAQ;SACT,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAa,EAAE,OAAgB;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,48 @@
1
+ import { EventEmitter } from "node:events";
2
+ /**
3
+ * Events emitted by the watcher
4
+ */
5
+ export interface WatcherEvents {
6
+ "workflow:added": {
7
+ path: string;
8
+ };
9
+ "workflow:changed": {
10
+ path: string;
11
+ };
12
+ "workflow:removed": {
13
+ path: string;
14
+ };
15
+ "persona:added": {
16
+ path: string;
17
+ };
18
+ "persona:changed": {
19
+ path: string;
20
+ };
21
+ "persona:removed": {
22
+ path: string;
23
+ };
24
+ }
25
+ /**
26
+ * File watcher for workflows and personas
27
+ */
28
+ export declare class Watcher extends EventEmitter {
29
+ private workflowsDir;
30
+ private personasDir;
31
+ private workflowWatcher;
32
+ private personaWatcher;
33
+ private running;
34
+ constructor(workflowsDir: string, personasDir: string);
35
+ /**
36
+ * Start watching for file changes
37
+ */
38
+ start(): void;
39
+ /**
40
+ * Stop watching
41
+ */
42
+ stop(): Promise<void>;
43
+ /**
44
+ * Check if watcher is running
45
+ */
46
+ isRunning(): boolean;
47
+ }
48
+ //# sourceMappingURL=watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/daemon/lib/watcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,kBAAkB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,kBAAkB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,iBAAiB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,iBAAiB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,OAAQ,SAAQ,YAAY;IAMrC,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IANrB,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,OAAO,CAAS;gBAGd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM;IAK7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAyCb;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
@@ -0,0 +1,77 @@
1
+ import { watch } from "chokidar";
2
+ import { EventEmitter } from "node:events";
3
+ import { dirname } from "node:path";
4
+ /**
5
+ * File watcher for workflows and personas
6
+ */
7
+ export class Watcher extends EventEmitter {
8
+ workflowsDir;
9
+ personasDir;
10
+ workflowWatcher = null;
11
+ personaWatcher = null;
12
+ running = false;
13
+ constructor(workflowsDir, personasDir) {
14
+ super();
15
+ this.workflowsDir = workflowsDir;
16
+ this.personasDir = personasDir;
17
+ }
18
+ /**
19
+ * Start watching for file changes
20
+ */
21
+ start() {
22
+ if (this.running)
23
+ return;
24
+ this.running = true;
25
+ // Watch workflows
26
+ this.workflowWatcher = watch(`${this.workflowsDir}/**/WORKFLOW.md`, {
27
+ ignoreInitial: true,
28
+ persistent: true,
29
+ });
30
+ this.workflowWatcher.on("add", (path) => {
31
+ this.emit("workflow:added", { path: dirname(path) });
32
+ });
33
+ this.workflowWatcher.on("change", (path) => {
34
+ this.emit("workflow:changed", { path: dirname(path) });
35
+ });
36
+ this.workflowWatcher.on("unlink", (path) => {
37
+ this.emit("workflow:removed", { path: dirname(path) });
38
+ });
39
+ // Watch personas
40
+ this.personaWatcher = watch(`${this.personasDir}/**/PERSONA.md`, {
41
+ ignoreInitial: true,
42
+ persistent: true,
43
+ });
44
+ this.personaWatcher.on("add", (path) => {
45
+ this.emit("persona:added", { path: dirname(path) });
46
+ });
47
+ this.personaWatcher.on("change", (path) => {
48
+ this.emit("persona:changed", { path: dirname(path) });
49
+ });
50
+ this.personaWatcher.on("unlink", (path) => {
51
+ this.emit("persona:removed", { path: dirname(path) });
52
+ });
53
+ }
54
+ /**
55
+ * Stop watching
56
+ */
57
+ async stop() {
58
+ if (!this.running)
59
+ return;
60
+ this.running = false;
61
+ if (this.workflowWatcher) {
62
+ await this.workflowWatcher.close();
63
+ this.workflowWatcher = null;
64
+ }
65
+ if (this.personaWatcher) {
66
+ await this.personaWatcher.close();
67
+ this.personaWatcher = null;
68
+ }
69
+ }
70
+ /**
71
+ * Check if watcher is running
72
+ */
73
+ isRunning() {
74
+ return this.running;
75
+ }
76
+ }
77
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/daemon/lib/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { DotAgentsConfig } from "./types/index.js";
2
+ /**
3
+ * Find .agents directory by searching up the directory tree
4
+ */
5
+ export declare function findAgentsDir(startDir?: string): Promise<string | null>;
6
+ /**
7
+ * Get the configuration for dot-agents
8
+ */
9
+ export declare function getConfig(startDir?: string): Promise<DotAgentsConfig | null>;
10
+ /**
11
+ * Get configuration or throw if not found
12
+ */
13
+ export declare function requireConfig(startDir?: string): Promise<DotAgentsConfig>;
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAuBxD;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,GAAE,MAAsB,GAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAcjC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAU/E"}
@@ -0,0 +1,76 @@
1
+ import { stat } from "node:fs/promises";
2
+ import { join, resolve } from "node:path";
3
+ import { homedir } from "node:os";
4
+ /**
5
+ * Default directory names
6
+ */
7
+ const AGENTS_DIR = ".agents";
8
+ const PERSONAS_DIR = "personas";
9
+ const WORKFLOWS_DIR = "workflows";
10
+ const SKILLS_DIR = "skills";
11
+ const SESSIONS_DIR = "sessions";
12
+ /**
13
+ * Check if a directory exists
14
+ */
15
+ async function dirExists(path) {
16
+ try {
17
+ const stats = await stat(path);
18
+ return stats.isDirectory();
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ /**
25
+ * Find .agents directory by searching up the directory tree
26
+ */
27
+ export async function findAgentsDir(startDir = process.cwd()) {
28
+ let currentDir = resolve(startDir);
29
+ const root = resolve("/");
30
+ while (currentDir !== root) {
31
+ const agentsPath = join(currentDir, AGENTS_DIR);
32
+ if (await dirExists(agentsPath)) {
33
+ return agentsPath;
34
+ }
35
+ // Also check if current dir contains personas/workflows directly (dev mode)
36
+ const personasDir = join(currentDir, PERSONAS_DIR);
37
+ const workflowsDir = join(currentDir, WORKFLOWS_DIR);
38
+ if ((await dirExists(personasDir)) || (await dirExists(workflowsDir))) {
39
+ return currentDir;
40
+ }
41
+ currentDir = resolve(currentDir, "..");
42
+ }
43
+ // Check home directory as fallback
44
+ const homeAgents = join(homedir(), AGENTS_DIR);
45
+ if (await dirExists(homeAgents)) {
46
+ return homeAgents;
47
+ }
48
+ return null;
49
+ }
50
+ /**
51
+ * Get the configuration for dot-agents
52
+ */
53
+ export async function getConfig(startDir) {
54
+ const agentsDir = await findAgentsDir(startDir);
55
+ if (!agentsDir) {
56
+ return null;
57
+ }
58
+ return {
59
+ agentsDir,
60
+ personasDir: join(agentsDir, PERSONAS_DIR),
61
+ workflowsDir: join(agentsDir, WORKFLOWS_DIR),
62
+ skillsDir: join(agentsDir, SKILLS_DIR),
63
+ sessionsDir: join(agentsDir, SESSIONS_DIR),
64
+ };
65
+ }
66
+ /**
67
+ * Get configuration or throw if not found
68
+ */
69
+ export async function requireConfig(startDir) {
70
+ const config = await getConfig(startDir);
71
+ if (!config) {
72
+ throw new Error("No .agents directory found. Run from a directory with .agents/ or create one.");
73
+ }
74
+ return config;
75
+ }
76
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC;;GAEG;AACH,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAEhC,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,4EAA4E;QAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAiB;IAEjB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS;QACT,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;QAC1C,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;QAC5C,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;QACtC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAiB;IACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Result of parsing a markdown file with YAML frontmatter
3
+ */
4
+ export interface ParsedMarkdown<T> {
5
+ /** Parsed YAML frontmatter */
6
+ frontmatter: T;
7
+ /** Markdown body content (after frontmatter) */
8
+ body: string;
9
+ }
10
+ /**
11
+ * Parse YAML frontmatter from a markdown file
12
+ */
13
+ export declare function parseFrontmatter<T>(content: string): ParsedMarkdown<T>;
14
+ /**
15
+ * Load and parse a markdown file with YAML frontmatter
16
+ */
17
+ export declare function loadMarkdownFile<T>(filePath: string): Promise<ParsedMarkdown<T>>;
18
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/lib/frontmatter.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,8BAA8B;IAC9B,WAAW,EAAE,CAAC,CAAC;IACf,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAetE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAG5B"}
@@ -0,0 +1,26 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { parse as parseYaml } from "yaml";
3
+ /**
4
+ * Parse YAML frontmatter from a markdown file
5
+ */
6
+ export function parseFrontmatter(content) {
7
+ const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
8
+ const match = content.match(frontmatterRegex);
9
+ if (!match) {
10
+ throw new Error("No YAML frontmatter found");
11
+ }
12
+ const [, yamlContent, body] = match;
13
+ const frontmatter = parseYaml(yamlContent);
14
+ return {
15
+ frontmatter,
16
+ body: body.trim(),
17
+ };
18
+ }
19
+ /**
20
+ * Load and parse a markdown file with YAML frontmatter
21
+ */
22
+ export async function loadMarkdownFile(filePath) {
23
+ const content = await readFile(filePath, "utf-8");
24
+ return parseFrontmatter(content);
25
+ }
26
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/lib/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAY1C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAI,OAAe;IACjD,MAAM,gBAAgB,GAAG,6CAA6C,CAAC;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IACpC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAM,CAAC;IAEhD,OAAO;QACL,WAAW;QACX,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,gBAAgB,CAAI,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./types/index.js";
2
+ export * from "./frontmatter.js";
3
+ export * from "./persona.js";
4
+ export * from "./workflow.js";
5
+ export * from "./variables.js";
6
+ export * from "./config.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Types
2
+ export * from "./types/index.js";
3
+ // Library functions
4
+ export * from "./frontmatter.js";
5
+ export * from "./persona.js";
6
+ export * from "./workflow.js";
7
+ export * from "./variables.js";
8
+ export * from "./config.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Persona, ResolvedPersona } from "./types/persona.js";
2
+ /**
3
+ * Load a single persona file
4
+ */
5
+ export declare function loadPersona(personaPath: string): Promise<Persona>;
6
+ /**
7
+ * Build the inheritance chain for a persona path
8
+ * Returns paths from root to leaf (e.g., ["claude", "claude/autonomous"])
9
+ */
10
+ export declare function buildInheritanceChain(personaPath: string, personasRoot: string): string[];
11
+ /**
12
+ * Merge arrays with gitignore-style negation support
13
+ * Items prefixed with ! remove matching items from the array
14
+ */
15
+ export declare function mergeArraysWithNegation(parent: string[], child: string[]): string[];
16
+ /**
17
+ * Deep merge two objects (child overrides parent)
18
+ */
19
+ export declare function deepMerge<T extends Record<string, unknown>>(parent: T, child: Partial<T>): T;
20
+ /**
21
+ * Merge two personas (child inherits from parent)
22
+ */
23
+ export declare function mergePersonas(parent: Persona, child: Persona): Persona;
24
+ /**
25
+ * Resolve a persona with full inheritance chain
26
+ */
27
+ export declare function resolvePersona(personaPath: string, personasRoot: string): Promise<ResolvedPersona>;
28
+ /**
29
+ * List all personas in a directory (recursive)
30
+ */
31
+ export declare function listPersonas(personasRoot: string): Promise<string[]>;
32
+ //# sourceMappingURL=persona.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/lib/persona.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBvE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,CAaV;AAeD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,EAAE,CAkBV;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAChB,CAAC,CA4BH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAkBtE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB1E"}