@intoinside/praxis 1.0.1

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 (61) hide show
  1. package/CODE_OF_CONDUCT.md +99 -0
  2. package/CONTRIBUTING.md +108 -0
  3. package/LICENSE +21 -0
  4. package/MAINTAINERS.md +9 -0
  5. package/README.md +319 -0
  6. package/intoinside-praxis-1.0.0.tgz +0 -0
  7. package/last_error.txt +42 -0
  8. package/package.json +40 -0
  9. package/src/commands/init.d.ts +1 -0
  10. package/src/commands/init.js +42 -0
  11. package/src/commands/init.ts +47 -0
  12. package/src/commands/integration/generate.d.ts +4 -0
  13. package/src/commands/integration/generate.js +69 -0
  14. package/src/commands/integration/generate.ts +85 -0
  15. package/src/commands/intent/create.d.ts +4 -0
  16. package/src/commands/intent/create.js +55 -0
  17. package/src/commands/intent/create.ts +61 -0
  18. package/src/commands/intent/list.d.ts +4 -0
  19. package/src/commands/intent/list.js +52 -0
  20. package/src/commands/intent/list.ts +63 -0
  21. package/src/commands/spec/apply.d.ts +4 -0
  22. package/src/commands/spec/apply.js +99 -0
  23. package/src/commands/spec/apply.ts +109 -0
  24. package/src/commands/spec/archive.d.ts +4 -0
  25. package/src/commands/spec/archive.js +114 -0
  26. package/src/commands/spec/archive.ts +121 -0
  27. package/src/commands/spec/delete.d.ts +4 -0
  28. package/src/commands/spec/delete.js +70 -0
  29. package/src/commands/spec/delete.ts +75 -0
  30. package/src/commands/spec/derive.d.ts +6 -0
  31. package/src/commands/spec/derive.js +107 -0
  32. package/src/commands/spec/derive.ts +117 -0
  33. package/src/core/command-generation/adapters/antigravity.d.ts +12 -0
  34. package/src/core/command-generation/adapters/antigravity.js +25 -0
  35. package/src/core/command-generation/adapters/antigravity.ts +30 -0
  36. package/src/core/command-generation/adapters/index.d.ts +6 -0
  37. package/src/core/command-generation/adapters/index.js +26 -0
  38. package/src/core/command-generation/adapters/index.ts +27 -0
  39. package/src/core/command-generation/generator.d.ts +20 -0
  40. package/src/core/command-generation/generator.js +26 -0
  41. package/src/core/command-generation/generator.ts +36 -0
  42. package/src/core/command-generation/index.d.ts +20 -0
  43. package/src/core/command-generation/index.js +23 -0
  44. package/src/core/command-generation/index.ts +33 -0
  45. package/src/core/command-generation/registry.d.ts +35 -0
  46. package/src/core/command-generation/registry.js +87 -0
  47. package/src/core/command-generation/registry.ts +95 -0
  48. package/src/core/command-generation/types.d.ts +54 -0
  49. package/src/core/command-generation/types.js +7 -0
  50. package/src/core/command-generation/types.ts +57 -0
  51. package/src/index.d.ts +2 -0
  52. package/src/index.js +95 -0
  53. package/src/index.ts +97 -0
  54. package/src/manifest.d.ts +21 -0
  55. package/src/manifest.js +170 -0
  56. package/src/manifest.ts +188 -0
  57. package/templates/checklist-template.md +42 -0
  58. package/templates/intent-template.md +290 -0
  59. package/templates/spec-template.md +114 -0
  60. package/test_output.txt +0 -0
  61. package/tsconfig.json +20 -0
package/src/index.ts ADDED
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { manifest } from './manifest.js';
4
+ import { initCommand } from './commands/init.js';
5
+ import { intentCreateAction } from './commands/intent/create.js';
6
+ import { intentListAction } from './commands/intent/list.js';
7
+ import { generateSlashCommandsAction } from './commands/integration/generate.js';
8
+
9
+ import { specDeriveAction } from './commands/spec/derive.js';
10
+ import { specDeleteAction } from './commands/spec/delete.js';
11
+ import { specApplyAction } from './commands/spec/apply.js';
12
+ import { specArchiveAction } from './commands/spec/archive.js';
13
+
14
+ const program = new Command();
15
+
16
+ program
17
+ .name('praxis')
18
+ .description('Praxis: Intent-First Development Framework')
19
+ .version('1.0.0');
20
+
21
+ // Dynamically build commands from manifest
22
+ manifest.forEach((cmdDef) => {
23
+ const cmd = program.command(cmdDef.name).description(cmdDef.description);
24
+
25
+ if (cmdDef.subcommands) {
26
+ cmdDef.subcommands.forEach((subCmdDef) => {
27
+ const subCmd = cmd.command(subCmdDef.name).description(subCmdDef.description);
28
+
29
+ if (subCmdDef.arguments) {
30
+ subCmdDef.arguments.forEach(arg => {
31
+ const argStr = arg.required ? `<${arg.name}>` : `[${arg.name}]`;
32
+ subCmd.argument(argStr, arg.description);
33
+ });
34
+ }
35
+
36
+ if (subCmdDef.options) {
37
+ subCmdDef.options.forEach(opt => {
38
+ const flag = opt.required ? `<${opt.name}>` : `[${opt.name}]`;
39
+ subCmd.option(opt.alias ? `-${opt.alias}, --${opt.name} ${flag}` : `--${opt.name} ${flag}`, opt.description);
40
+ });
41
+ }
42
+
43
+ subCmd.action(async (...args: any[]) => {
44
+ if (cmdDef.name === 'intent' && subCmdDef.name === 'create') {
45
+ const [description] = args;
46
+ await intentCreateAction(description);
47
+ } else if (cmdDef.name === 'intent' && subCmdDef.name === 'list') {
48
+ await intentListAction();
49
+ } else if (cmdDef.name === 'integration' && subCmdDef.name === 'generate-slash-commands') {
50
+ const [tool] = args;
51
+ await generateSlashCommandsAction(tool);
52
+ } else if (cmdDef.name === 'spec' && subCmdDef.name === 'derive') {
53
+ const [options] = args;
54
+ await specDeriveAction(options);
55
+ } else if (cmdDef.name === 'spec' && subCmdDef.name === 'delete') {
56
+ const [specId] = args;
57
+ await specDeleteAction(specId);
58
+ } else if (cmdDef.name === 'spec' && subCmdDef.name === 'apply') {
59
+ const [specId] = args;
60
+ await specApplyAction(specId);
61
+ } else if (cmdDef.name === 'spec' && subCmdDef.name === 'archive') {
62
+ const [specId] = args;
63
+ await specArchiveAction(specId);
64
+ } else {
65
+ console.log(`Executing ${cmdDef.name} ${subCmdDef.name}...`);
66
+ // Implementation will go here
67
+ }
68
+ });
69
+ });
70
+ } else {
71
+ // Top-level command with no subcommands
72
+ if (cmdDef.arguments) {
73
+ cmdDef.arguments.forEach(arg => {
74
+ const argStr = arg.required ? `<${arg.name}>` : `[${arg.name}]`;
75
+ cmd.argument(argStr, arg.description);
76
+ });
77
+ }
78
+
79
+ if (cmdDef.options) {
80
+ cmdDef.options.forEach(opt => {
81
+ const flag = opt.required ? `<${opt.name}>` : `[${opt.name}]`;
82
+ cmd.option(opt.alias ? `-${opt.alias}, --${opt.name} ${flag}` : `--${opt.name} ${flag}`, opt.description);
83
+ });
84
+ }
85
+
86
+ cmd.action(async () => {
87
+ if (cmdDef.name === 'init') {
88
+ await initCommand();
89
+ } else {
90
+ console.log(`Executing ${cmdDef.name}...`);
91
+ // Implementation will go here
92
+ }
93
+ });
94
+ }
95
+ });
96
+
97
+ program.parse();
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Praxis Command Manifest
3
+ * This file defines all supported commands and subcommands for the Praxis CLI.
4
+ */
5
+ export interface CommandDefinition {
6
+ name: string;
7
+ description: string;
8
+ subcommands?: CommandDefinition[];
9
+ options?: {
10
+ name: string;
11
+ description: string;
12
+ alias?: string;
13
+ required?: boolean;
14
+ }[];
15
+ arguments?: {
16
+ name: string;
17
+ description: string;
18
+ required?: boolean;
19
+ }[];
20
+ }
21
+ export declare const manifest: CommandDefinition[];
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Praxis Command Manifest
3
+ * This file defines all supported commands and subcommands for the Praxis CLI.
4
+ */
5
+ export const manifest = [
6
+ {
7
+ name: 'init',
8
+ description: 'Initialize a new project to be used with Praxis',
9
+ },
10
+ {
11
+ name: 'intent',
12
+ description: 'Manage intents (the WHY)',
13
+ subcommands: [
14
+ {
15
+ name: 'create',
16
+ description: 'Create a new intent',
17
+ arguments: [
18
+ {
19
+ name: 'description',
20
+ description: 'The description of the intent to create',
21
+ required: true,
22
+ }
23
+ ]
24
+ },
25
+ {
26
+ name: 'update',
27
+ description: 'Update an existing intent',
28
+ },
29
+ {
30
+ name: 'validate',
31
+ description: 'Validate all intents for completeness and consistency',
32
+ },
33
+ {
34
+ name: 'list',
35
+ description: 'List all defined intents',
36
+ },
37
+ {
38
+ name: 'check',
39
+ description: 'Verify that current specs and code still satisfy all intents',
40
+ },
41
+ ],
42
+ },
43
+ {
44
+ name: 'model',
45
+ description: 'Generate or update the intent model',
46
+ options: [
47
+ {
48
+ name: 'intent-id',
49
+ description: 'The ID of the intent to model',
50
+ required: true
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ name: 'spec',
56
+ description: 'Manage specifications (the WHAT)',
57
+ subcommands: [
58
+ {
59
+ name: 'derive',
60
+ description: 'Generate initial specifications from an intent or intent model',
61
+ options: [
62
+ {
63
+ name: 'from',
64
+ description: 'The ID of the intent or model to derive from',
65
+ required: true,
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ name: 'refine',
71
+ description: 'Manually refine a specification while preserving intent traceability',
72
+ },
73
+ {
74
+ name: 'validate',
75
+ description: 'Validate specs for internal consistency and completeness',
76
+ },
77
+ {
78
+ name: 'lock',
79
+ description: 'Lock a specification as a formal contract',
80
+ },
81
+ {
82
+ name: 'list',
83
+ description: 'List all specifications and their associated intents',
84
+ },
85
+ {
86
+ name: 'check',
87
+ description: 'Verify implementation compliance against locked specs',
88
+ },
89
+ {
90
+ name: 'delete',
91
+ description: 'Delete a specification and its artifacts',
92
+ arguments: [
93
+ {
94
+ name: 'spec-id',
95
+ description: 'The ID of the spec to delete',
96
+ required: true,
97
+ },
98
+ ],
99
+ },
100
+ {
101
+ name: 'archive',
102
+ description: 'Archive a specification',
103
+ arguments: [
104
+ {
105
+ name: 'spec-id',
106
+ description: 'The ID of the spec to archive',
107
+ required: true,
108
+ },
109
+ ],
110
+ },
111
+ {
112
+ name: 'apply',
113
+ description: 'Implement a specification',
114
+ arguments: [
115
+ {
116
+ name: 'spec-id',
117
+ description: 'The ID of the spec to apply',
118
+ required: true,
119
+ },
120
+ ],
121
+ },
122
+ ],
123
+ },
124
+ {
125
+ name: 'analyze',
126
+ description: 'Analyze impact and drift',
127
+ subcommands: [
128
+ {
129
+ name: 'impact',
130
+ description: 'Analyze the impact of changes to an intent on specs and code',
131
+ options: [
132
+ {
133
+ name: 'intent',
134
+ description: 'The ID of the intent to analyze',
135
+ required: true,
136
+ },
137
+ ],
138
+ },
139
+ {
140
+ name: 'drift',
141
+ description: 'Detect intent/spec/code drift',
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ name: 'integration',
147
+ description: 'IDE and AI integration',
148
+ subcommands: [
149
+ {
150
+ name: 'serve',
151
+ description: 'Expose Praxis commands through a local service',
152
+ },
153
+ {
154
+ name: 'commands',
155
+ description: 'List all available commands in machine-readable form',
156
+ },
157
+ {
158
+ name: 'generate-slash-commands',
159
+ description: 'Generate slash command definitions for IDE integration',
160
+ arguments: [
161
+ {
162
+ name: 'tool',
163
+ description: 'The tool ID (e.g., antigravity)',
164
+ required: true,
165
+ }
166
+ ]
167
+ },
168
+ ],
169
+ },
170
+ ];
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Praxis Command Manifest
3
+ * This file defines all supported commands and subcommands for the Praxis CLI.
4
+ */
5
+
6
+ export interface CommandDefinition {
7
+ name: string;
8
+ description: string;
9
+ subcommands?: CommandDefinition[];
10
+ options?: {
11
+ name: string;
12
+ description: string;
13
+ alias?: string;
14
+ required?: boolean;
15
+ }[];
16
+ arguments?: {
17
+ name: string;
18
+ description: string;
19
+ required?: boolean;
20
+ }[];
21
+ }
22
+
23
+ export const manifest: CommandDefinition[] = [
24
+ {
25
+ name: 'init',
26
+ description: 'Initialize a new project to be used with Praxis',
27
+ },
28
+ {
29
+ name: 'intent',
30
+ description: 'Manage intents (the WHY)',
31
+ subcommands: [
32
+ {
33
+ name: 'create',
34
+ description: 'Create a new intent',
35
+ arguments: [
36
+ {
37
+ name: 'description',
38
+ description: 'The description of the intent to create',
39
+ required: true,
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ name: 'update',
45
+ description: 'Update an existing intent',
46
+ },
47
+ {
48
+ name: 'validate',
49
+ description: 'Validate all intents for completeness and consistency',
50
+ },
51
+ {
52
+ name: 'list',
53
+ description: 'List all defined intents',
54
+ },
55
+ {
56
+ name: 'check',
57
+ description: 'Verify that current specs and code still satisfy all intents',
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ name: 'model',
63
+ description: 'Generate or update the intent model',
64
+ options: [
65
+ {
66
+ name: 'intent-id',
67
+ description: 'The ID of the intent to model',
68
+ required: true
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ name: 'spec',
74
+ description: 'Manage specifications (the WHAT)',
75
+ subcommands: [
76
+ {
77
+ name: 'derive',
78
+ description: 'Generate initial specifications from an intent or intent model',
79
+ options: [
80
+ {
81
+ name: 'from',
82
+ description: 'The ID of the intent or model to derive from',
83
+ required: true,
84
+ },
85
+ ],
86
+ },
87
+ {
88
+ name: 'refine',
89
+ description: 'Manually refine a specification while preserving intent traceability',
90
+ },
91
+ {
92
+ name: 'validate',
93
+ description: 'Validate specs for internal consistency and completeness',
94
+ },
95
+ {
96
+ name: 'lock',
97
+ description: 'Lock a specification as a formal contract',
98
+ },
99
+ {
100
+ name: 'list',
101
+ description: 'List all specifications and their associated intents',
102
+ },
103
+ {
104
+ name: 'check',
105
+ description: 'Verify implementation compliance against locked specs',
106
+ },
107
+ {
108
+ name: 'delete',
109
+ description: 'Delete a specification and its artifacts',
110
+ arguments: [
111
+ {
112
+ name: 'spec-id',
113
+ description: 'The ID of the spec to delete',
114
+ required: true,
115
+ },
116
+ ],
117
+ },
118
+ {
119
+ name: 'archive',
120
+ description: 'Archive a specification',
121
+ arguments: [
122
+ {
123
+ name: 'spec-id',
124
+ description: 'The ID of the spec to archive',
125
+ required: true,
126
+ },
127
+ ],
128
+ },
129
+ {
130
+ name: 'apply',
131
+ description: 'Implement a specification',
132
+ arguments: [
133
+ {
134
+ name: 'spec-id',
135
+ description: 'The ID of the spec to apply',
136
+ required: true,
137
+ },
138
+ ],
139
+ },
140
+ ],
141
+ },
142
+ {
143
+ name: 'analyze',
144
+ description: 'Analyze impact and drift',
145
+ subcommands: [
146
+ {
147
+ name: 'impact',
148
+ description: 'Analyze the impact of changes to an intent on specs and code',
149
+ options: [
150
+ {
151
+ name: 'intent',
152
+ description: 'The ID of the intent to analyze',
153
+ required: true,
154
+ },
155
+ ],
156
+ },
157
+ {
158
+ name: 'drift',
159
+ description: 'Detect intent/spec/code drift',
160
+ },
161
+ ],
162
+ },
163
+ {
164
+ name: 'integration',
165
+ description: 'IDE and AI integration',
166
+ subcommands: [
167
+ {
168
+ name: 'serve',
169
+ description: 'Expose Praxis commands through a local service',
170
+ },
171
+ {
172
+ name: 'commands',
173
+ description: 'List all available commands in machine-readable form',
174
+ },
175
+ {
176
+ name: 'generate-slash-commands',
177
+ description: 'Generate slash command definitions for IDE integration',
178
+ arguments: [
179
+ {
180
+ name: 'tool',
181
+ description: 'The tool ID (e.g., antigravity)',
182
+ required: true,
183
+ }
184
+ ]
185
+ },
186
+ ],
187
+ },
188
+ ];
@@ -0,0 +1,42 @@
1
+ # [Feature] Requirements Quality Checklist
2
+
3
+ **Purpose**: Validate intent completeness and quality before proceeding to planning
4
+ **Created**: [DATE]
5
+ **Feature**: [Link to intent.md]
6
+
7
+ ## Content Quality
8
+
9
+ - [ ] No implementation details (languages, frameworks, APIs)
10
+ - [ ] Focused on user value and business needs
11
+ - [ ] Written for non-technical stakeholders
12
+ - [ ] All mandatory sections completed
13
+ - [ ] User stories prioritized by business value and technical feasibility
14
+ - [ ] Clear success thresholds defined (minimum viable, target, stretch goals)
15
+
16
+ ## Requirement Completeness
17
+
18
+ - [ ] No [NEEDS CLARIFICATION] markers remain
19
+ - [ ] Requirements are testable and unambiguous
20
+ - [ ] Success criteria are measurable
21
+ - [ ] Success criteria are technology-agnostic (no implementation details)
22
+ - [ ] All acceptance scenarios are defined
23
+ - [ ] Edge cases are identified
24
+ - [ ] Scope is clearly bounded
25
+ - [ ] Dependencies and assumptions identified
26
+ - [ ] Non-functional requirements specified (performance, security, scalability, usability)
27
+
28
+ ## Feature Readiness
29
+
30
+ - [ ] All functional requirements have clear acceptance criteria
31
+ - [ ] User scenarios cover primary flows
32
+ - [ ] Feature meets measurable outcomes defined in Success Criteria
33
+ - [ ] No implementation details leak into intent
34
+ - [ ] User stories are independently testable and deliverable
35
+ - [ ] Risk assessment and mitigation strategies documented
36
+
37
+ ## Validation Results
38
+
39
+ - [ ] Checklist completed by: [Name/Role]
40
+ - [ ] Date of validation: [DATE]
41
+ - [ ] Overall status: [Pass/Fail/Conditional Pass]
42
+ - [ ] Action items for improvements: [List any required changes]