planfs-core 1.2.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/README.md +125 -0
- package/dist/ai.d.ts +98 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +265 -0
- package/dist/ai.js.map +1 -0
- package/dist/backlog.d.ts +40 -0
- package/dist/backlog.d.ts.map +1 -0
- package/dist/backlog.js +206 -0
- package/dist/backlog.js.map +1 -0
- package/dist/bulk.d.ts +29 -0
- package/dist/bulk.d.ts.map +1 -0
- package/dist/bulk.js +206 -0
- package/dist/bulk.js.map +1 -0
- package/dist/files.d.ts +38 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +179 -0
- package/dist/files.js.map +1 -0
- package/dist/git.d.ts +74 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +426 -0
- package/dist/git.js.map +1 -0
- package/dist/graph.d.ts +56 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +188 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +26 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +248 -0
- package/dist/loader.js.map +1 -0
- package/dist/milestone.d.ts +23 -0
- package/dist/milestone.d.ts.map +1 -0
- package/dist/milestone.js +60 -0
- package/dist/milestone.js.map +1 -0
- package/dist/next-work.d.ts +34 -0
- package/dist/next-work.d.ts.map +1 -0
- package/dist/next-work.js +239 -0
- package/dist/next-work.js.map +1 -0
- package/dist/parser.d.ts +37 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +132 -0
- package/dist/parser.js.map +1 -0
- package/dist/pull-request.d.ts +38 -0
- package/dist/pull-request.d.ts.map +1 -0
- package/dist/pull-request.js +147 -0
- package/dist/pull-request.js.map +1 -0
- package/dist/references.d.ts +10 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +30 -0
- package/dist/references.js.map +1 -0
- package/dist/repository.d.ts +85 -0
- package/dist/repository.d.ts.map +1 -0
- package/dist/repository.js +495 -0
- package/dist/repository.js.map +1 -0
- package/dist/search.d.ts +25 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +150 -0
- package/dist/search.js.map +1 -0
- package/dist/types.d.ts +119 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/validator.d.ts +24 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +540 -0
- package/dist/validator.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pull request integration helpers
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getPullRequestProviderBoundaries = getPullRequestProviderBoundaries;
|
|
7
|
+
exports.generatePullRequestSummary = generatePullRequestSummary;
|
|
8
|
+
exports.getTaskPullRequestRefs = getTaskPullRequestRefs;
|
|
9
|
+
exports.getTaskPullRequestRefsById = getTaskPullRequestRefsById;
|
|
10
|
+
const git_1 = require("./git");
|
|
11
|
+
function getPullRequestProviderBoundaries() {
|
|
12
|
+
return [
|
|
13
|
+
{
|
|
14
|
+
id: 'github',
|
|
15
|
+
name: 'GitHub',
|
|
16
|
+
status: 'local-summary',
|
|
17
|
+
responsibilities: [
|
|
18
|
+
'Read branch context from local Git',
|
|
19
|
+
'Generate PR summaries and templates',
|
|
20
|
+
'Leave hosted API calls to a provider adapter'
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'gitlab',
|
|
25
|
+
name: 'GitLab',
|
|
26
|
+
status: 'planned',
|
|
27
|
+
responsibilities: [
|
|
28
|
+
'Map PlanFS PR summaries to merge requests',
|
|
29
|
+
'Read merge request status through a provider adapter',
|
|
30
|
+
'Keep GitLab-specific API fields outside core planning models'
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'azure-devops',
|
|
35
|
+
name: 'Azure DevOps',
|
|
36
|
+
status: 'planned',
|
|
37
|
+
responsibilities: [
|
|
38
|
+
'Map PlanFS PR summaries to Azure Repos pull requests',
|
|
39
|
+
'Read pull request status through a provider adapter',
|
|
40
|
+
'Keep Azure-specific API fields outside core planning models'
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
async function generatePullRequestSummary(rootPath, options = {}) {
|
|
46
|
+
const provider = options.provider ?? 'github';
|
|
47
|
+
const context = await (0, git_1.getBranchPlanningContext)(rootPath, options);
|
|
48
|
+
const markdown = [
|
|
49
|
+
'## PlanFS',
|
|
50
|
+
'',
|
|
51
|
+
`Branch: \`${context.currentBranch}\``,
|
|
52
|
+
`Base: \`${context.comparisonRef}\``,
|
|
53
|
+
'',
|
|
54
|
+
'### Related Tasks',
|
|
55
|
+
'',
|
|
56
|
+
context.relatedTaskIds.length > 0
|
|
57
|
+
? context.relatedTaskIds.map(id => `- ${id}`).join('\n')
|
|
58
|
+
: '- No related PlanFS tasks detected.',
|
|
59
|
+
'',
|
|
60
|
+
'### Planning Changes',
|
|
61
|
+
'',
|
|
62
|
+
`- Added tasks: ${context.addedTasks.length}`,
|
|
63
|
+
`- Modified tasks: ${context.modifiedTasks.length}`,
|
|
64
|
+
`- Deleted tasks: ${context.deletedTaskIds.length}`,
|
|
65
|
+
`- Changed PlanFS files: ${context.changedFiles.length}`,
|
|
66
|
+
`- PlanFS conflicts: ${context.conflicts.length}`,
|
|
67
|
+
'',
|
|
68
|
+
'### Added Tasks',
|
|
69
|
+
'',
|
|
70
|
+
renderTaskChanges(context.addedTasks),
|
|
71
|
+
'',
|
|
72
|
+
'### Modified Tasks',
|
|
73
|
+
'',
|
|
74
|
+
renderTaskChanges(context.modifiedTasks),
|
|
75
|
+
'',
|
|
76
|
+
'### Deleted Tasks',
|
|
77
|
+
'',
|
|
78
|
+
context.deletedTaskIds.length > 0
|
|
79
|
+
? context.deletedTaskIds.map(id => `- ${id}`).join('\n')
|
|
80
|
+
: '- None',
|
|
81
|
+
'',
|
|
82
|
+
'### Validation',
|
|
83
|
+
'',
|
|
84
|
+
'- [ ] `planfs validate --format json` passes',
|
|
85
|
+
'- [ ] Related task IDs are correct',
|
|
86
|
+
'- [ ] Planning changes are intentional'
|
|
87
|
+
].join('\n');
|
|
88
|
+
return {
|
|
89
|
+
provider,
|
|
90
|
+
title: context.pullRequestPreview.title,
|
|
91
|
+
markdown,
|
|
92
|
+
relatedTaskIds: context.relatedTaskIds,
|
|
93
|
+
branch: context.currentBranch,
|
|
94
|
+
baseRef: context.comparisonRef,
|
|
95
|
+
changedPlanfsFiles: context.changedFiles.length,
|
|
96
|
+
addedTasks: context.addedTasks.length,
|
|
97
|
+
modifiedTasks: context.modifiedTasks.length,
|
|
98
|
+
deletedTasks: context.deletedTaskIds.length,
|
|
99
|
+
conflicts: context.conflicts.length
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function getTaskPullRequestRefs(task) {
|
|
103
|
+
const links = task.links ?? {};
|
|
104
|
+
return Object.values(links).flatMap(link => {
|
|
105
|
+
if (typeof link !== 'string') {
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
const provider = providerFromUrl(link);
|
|
109
|
+
return provider ? [{ provider, url: link, status: 'linked' }] : [];
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function getTaskPullRequestRefsById(repository) {
|
|
113
|
+
const refs = new Map();
|
|
114
|
+
for (const task of repository.tasks.values()) {
|
|
115
|
+
const taskRefs = getTaskPullRequestRefs(task);
|
|
116
|
+
if (taskRefs.length > 0) {
|
|
117
|
+
refs.set(task.id, taskRefs);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return refs;
|
|
121
|
+
}
|
|
122
|
+
function renderTaskChanges(tasks) {
|
|
123
|
+
if (tasks.length === 0) {
|
|
124
|
+
return '- None';
|
|
125
|
+
}
|
|
126
|
+
return tasks
|
|
127
|
+
.map(task => {
|
|
128
|
+
const status = task.previous
|
|
129
|
+
? `${task.previous.status} -> ${task.status}`
|
|
130
|
+
: task.status;
|
|
131
|
+
return `- ${task.id}: ${task.title} (${status})`;
|
|
132
|
+
})
|
|
133
|
+
.join('\n');
|
|
134
|
+
}
|
|
135
|
+
function providerFromUrl(url) {
|
|
136
|
+
if (/github\.com\/.+\/.+\/pull\/\d+/i.test(url)) {
|
|
137
|
+
return 'github';
|
|
138
|
+
}
|
|
139
|
+
if (/gitlab\..+\/.+\/-\/merge_requests\/\d+/i.test(url)) {
|
|
140
|
+
return 'gitlab';
|
|
141
|
+
}
|
|
142
|
+
if (/dev\.azure\.com\/.+\/.+\/_git\/.+\/pullrequest\/\d+/i.test(url)) {
|
|
143
|
+
return 'azure-devops';
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=pull-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-request.js","sourceRoot":"","sources":["../src/pull-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared reference semantics for active and archived planning entities.
|
|
3
|
+
*/
|
|
4
|
+
import { Entity, Repository, Task } from './types';
|
|
5
|
+
export declare function listArchivedReferenceEntities(repository: Repository): Entity[];
|
|
6
|
+
export declare function findTaskReference(repository: Repository, taskId: string): Task | undefined;
|
|
7
|
+
export declare function isArchivedReference(entity: Entity | undefined): boolean;
|
|
8
|
+
export declare function isTaskReferenceSatisfied(repository: Repository, taskId: string): boolean;
|
|
9
|
+
export declare function isTaskDependencyBlocking(repository: Repository, taskId: string): boolean;
|
|
10
|
+
//# sourceMappingURL=references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,CAK9E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAE1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAExF;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGxF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared reference semantics for active and archived planning entities.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.listArchivedReferenceEntities = listArchivedReferenceEntities;
|
|
7
|
+
exports.findTaskReference = findTaskReference;
|
|
8
|
+
exports.isArchivedReference = isArchivedReference;
|
|
9
|
+
exports.isTaskReferenceSatisfied = isTaskReferenceSatisfied;
|
|
10
|
+
exports.isTaskDependencyBlocking = isTaskDependencyBlocking;
|
|
11
|
+
function listArchivedReferenceEntities(repository) {
|
|
12
|
+
return [
|
|
13
|
+
...Array.from(repository.archivedTasks?.values() ?? []),
|
|
14
|
+
...Array.from(repository.archivedEpics?.values() ?? [])
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
function findTaskReference(repository, taskId) {
|
|
18
|
+
return repository.tasks.get(taskId) ?? repository.archivedTasks?.get(taskId);
|
|
19
|
+
}
|
|
20
|
+
function isArchivedReference(entity) {
|
|
21
|
+
return Boolean(entity?.archive);
|
|
22
|
+
}
|
|
23
|
+
function isTaskReferenceSatisfied(repository, taskId) {
|
|
24
|
+
return Boolean(findTaskReference(repository, taskId));
|
|
25
|
+
}
|
|
26
|
+
function isTaskDependencyBlocking(repository, taskId) {
|
|
27
|
+
const task = repository.tasks.get(taskId);
|
|
28
|
+
return Boolean(task && task.status !== 'done');
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,sEAKC;AAED,8CAEC;AAED,kDAEC;AAED,4DAEC;AAED,4DAGC;AAtBD,SAAgB,6BAA6B,CAAC,UAAsB;IAClE,OAAO;QACL,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACvD,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAsB,EAAE,MAAc;IACtE,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAA0B;IAC5D,OAAO,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,wBAAwB,CAAC,UAAsB,EAAE,MAAc;IAC7E,OAAO,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,wBAAwB,CAAC,UAAsB,EAAE,MAAc;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository loader
|
|
3
|
+
* Main API for loading and querying a PlanFS repository
|
|
4
|
+
*/
|
|
5
|
+
import { PlanfsInitializationResult } from './files';
|
|
6
|
+
import { Entity, Repository, Task, Epic, Milestone, ValidationResult } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Load a PlanFS repository
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadRepository(rootPath: string): Promise<Repository>;
|
|
11
|
+
/**
|
|
12
|
+
* Get all entities from a repository
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAllEntities(repository: Repository, options?: {
|
|
15
|
+
includeArchived?: boolean;
|
|
16
|
+
}): Entity[];
|
|
17
|
+
/**
|
|
18
|
+
* Validate a repository
|
|
19
|
+
*/
|
|
20
|
+
export declare function validateRepositoryState(repository: Repository): ValidationResult;
|
|
21
|
+
/**
|
|
22
|
+
* Save an entity to disk
|
|
23
|
+
*/
|
|
24
|
+
export declare function saveEntity(rootPath: string, entity: Entity): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Generate file content from an entity
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateEntityContent(entity: Entity): string;
|
|
29
|
+
export interface ArchiveEntityOptions {
|
|
30
|
+
includeChildren?: boolean;
|
|
31
|
+
now?: Date;
|
|
32
|
+
}
|
|
33
|
+
export interface ArchiveEntityResult {
|
|
34
|
+
archived: Entity[];
|
|
35
|
+
}
|
|
36
|
+
export declare function isArchivedEntity(entity: Entity): boolean;
|
|
37
|
+
export declare function listArchivedEntities(repository: Repository): Entity[];
|
|
38
|
+
export declare function archiveEntity(rootPath: string, entityId: string, options?: ArchiveEntityOptions): Promise<ArchiveEntityResult>;
|
|
39
|
+
export interface RestoreArchivedEntityOptions {
|
|
40
|
+
now?: Date;
|
|
41
|
+
recalculateBacklogOrder?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare function restoreArchivedEntity(rootPath: string, entityId: string, options?: RestoreArchivedEntityOptions): Promise<Entity>;
|
|
44
|
+
export declare function deleteArchivedEntity(rootPath: string, entityId: string): Promise<Entity>;
|
|
45
|
+
/**
|
|
46
|
+
* Query tasks by status
|
|
47
|
+
*/
|
|
48
|
+
export declare function getTasksByStatus(repository: Repository, status: Task['status']): Task[];
|
|
49
|
+
/**
|
|
50
|
+
* Query tasks by assignee
|
|
51
|
+
*/
|
|
52
|
+
export declare function getTasksByAssignee(repository: Repository, assignee: string): Task[];
|
|
53
|
+
/**
|
|
54
|
+
* Query tasks by epic
|
|
55
|
+
*/
|
|
56
|
+
export declare function getTasksByEpic(repository: Repository, epicId: string): Task[];
|
|
57
|
+
/**
|
|
58
|
+
* Initialize a new repository
|
|
59
|
+
*/
|
|
60
|
+
export declare function initializeRepository(rootPath: string): Promise<PlanfsInitializationResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Get next task ID
|
|
63
|
+
*/
|
|
64
|
+
export declare function getNextTaskId(repository: Repository): string;
|
|
65
|
+
/**
|
|
66
|
+
* Get an available epic ID from a title
|
|
67
|
+
*/
|
|
68
|
+
export declare function getNextEpicId(repository: Repository, title: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* Get an available milestone ID from a title
|
|
71
|
+
*/
|
|
72
|
+
export declare function getNextMilestoneId(repository: Repository, title: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Create a new task template
|
|
75
|
+
*/
|
|
76
|
+
export declare function createTaskTemplate(id: string, title: string): Task;
|
|
77
|
+
/**
|
|
78
|
+
* Create a new epic template
|
|
79
|
+
*/
|
|
80
|
+
export declare function createEpicTemplate(id: string, title: string): Epic;
|
|
81
|
+
/**
|
|
82
|
+
* Create a new milestone template
|
|
83
|
+
*/
|
|
84
|
+
export declare function createMilestoneTemplate(id: string, title: string, targetDate: string): Milestone;
|
|
85
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|