json-object-editor 0.10.509 → 0.10.521

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 (47) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/_www/mcp-export.html +11 -4
  3. package/_www/mcp-nav.js +8 -4
  4. package/_www/mcp-prompt.html +96 -121
  5. package/_www/mcp-schemas.html +294 -0
  6. package/_www/mcp-test.html +86 -0
  7. package/docs/JOE_Master_Knowledge_Export.md +135 -0
  8. package/docs/joe_agent_custom_gpt_instructions_v_2.md +54 -0
  9. package/docs/joe_agent_spec_v_2.2.md +64 -0
  10. package/docs/schema_summary_guidelines.md +128 -0
  11. package/package.json +1 -1
  12. package/readme.md +525 -469
  13. package/server/modules/MCP.js +606 -405
  14. package/server/modules/Schemas.js +321 -111
  15. package/server/modules/Server.js +26 -15
  16. package/server/modules/Storage.js +9 -0
  17. package/server/relationships.graph.json +5 -0
  18. package/server/schemas/block.js +37 -0
  19. package/server/schemas/board.js +2 -1
  20. package/server/schemas/budget.js +28 -1
  21. package/server/schemas/event.js +42 -0
  22. package/server/schemas/financial_account.js +35 -0
  23. package/server/schemas/goal.js +30 -0
  24. package/server/schemas/group.js +31 -0
  25. package/server/schemas/include.js +28 -0
  26. package/server/schemas/ingredient.js +28 -0
  27. package/server/schemas/initiative.js +32 -0
  28. package/server/schemas/instance.js +31 -1
  29. package/server/schemas/layout.js +31 -0
  30. package/server/schemas/ledger.js +30 -0
  31. package/server/schemas/list.js +33 -0
  32. package/server/schemas/meal.js +30 -0
  33. package/server/schemas/note.js +30 -0
  34. package/server/schemas/notification.js +33 -1
  35. package/server/schemas/page.js +43 -0
  36. package/server/schemas/post.js +32 -0
  37. package/server/schemas/project.js +36 -0
  38. package/server/schemas/recipe.js +32 -0
  39. package/server/schemas/report.js +32 -0
  40. package/server/schemas/setting.js +22 -0
  41. package/server/schemas/site.js +30 -0
  42. package/server/schemas/status.js +33 -0
  43. package/server/schemas/tag.js +28 -1
  44. package/server/schemas/task.js +778 -737
  45. package/server/schemas/transaction.js +43 -0
  46. package/server/schemas/user.js +36 -1
  47. package/server/schemas/workflow.js +30 -1
@@ -1,6 +1,49 @@
1
1
  var schema = {
2
2
  title : '${name}',
3
3
  info:"A transaction is a debit or credit associated with a specific financial account or budget",
4
+ // Curated summary for agents
5
+ summary:{
6
+ description:'Debit or credit movement between financial accounts and/or budgets.',
7
+ purpose:'Use transactions to model income and expenses. Supports recurrence (onetime, weekly, monthly, yearly, irregular) and optional occurrences.',
8
+ labelField:'name',
9
+ defaultSort:{ field:'joeUpdated', dir:'desc' },
10
+ searchableFields:['name','info','_id'],
11
+ allowedSorts:['joeUpdated','created','name','amount','next','transaction_date'],
12
+ relationships:{
13
+ outbound:[
14
+ { field:'account_from', targetSchema:'financial_account', cardinality:'one' },
15
+ { field:'account_to', targetSchema:'financial_account', cardinality:'one' },
16
+ { field:'budget', targetSchema:'budget', cardinality:'one' },
17
+ { field:'tags', targetSchema:'tag', cardinality:'many' }
18
+ ],
19
+ inbound:{ graphRef:'server/relationships.graph.json' }
20
+ },
21
+ joeManagedFields:['created','joeUpdated'],
22
+ fields:[
23
+ { name:'_id', type:'string', required:true },
24
+ { name:'itemtype', type:'string', required:true, const:'transaction' },
25
+ { name:'name', type:'string', required:true },
26
+ { name:'info', type:'string' },
27
+ { name:'budget', type:'string', isReference:true, targetSchema:'budget' },
28
+ { name:'tags', type:'string', isArray:true, isReference:true, targetSchema:'tag' },
29
+ { name:'account_from', type:'string', isReference:true, targetSchema:'financial_account' },
30
+ { name:'account_to', type:'string', isReference:true, targetSchema:'financial_account' },
31
+ { name:'recurrence', type:'string', enumValues:['onetime','irregular','weekly','biweekly','monthly','yearly'] },
32
+ { name:'transaction_date', type:'string' },
33
+ { name:'start_date', type:'string', format:'date' },
34
+ { name:'end_date', type:'string', format:'date' },
35
+ { name:'next', type:'string' },
36
+ { name:'occurences', type:'objectList' },
37
+ { name:'amount', type:'number' },
38
+ { name:'transaction_type', type:'string', enumValues:['debit','credit'] },
39
+ { name:'variable_amount', type:'boolean' },
40
+ { name:'autopay', type:'boolean' },
41
+ { name:'paycheck', type:'boolean' },
42
+ { name:'description', type:'string' },
43
+ { name:'joeUpdated', type:'string', format:'date-time', required:true },
44
+ { name:'created', type:'string', format:'date-time', required:true }
45
+ ]
46
+ },
4
47
  listView:{
5
48
  title: function(item){
6
49
  var amount = parseFloat(item.amount || 0);
@@ -1,8 +1,43 @@
1
1
  var user = function(){return{
2
- title : '${name}',
2
+ title : '${fullname} | ${name}',
3
3
  info:"Manage each user you've given access to supervise, edit, or view elements of your dashboard.",
4
4
  default_schema:true,
5
5
  searchables:['name','info','fullname','_id','email'],
6
+ // Curated summary for agents
7
+ summary:{
8
+ description:'Account representing a person with roles, access, and identity.',
9
+ purpose:'Users authenticate into JOE. They hold roles and may belong to groups, tags, and apps. Many schemas reference users (e.g., tasks.members, project.members). Use user to resolve identities, access scopes, and human names for references.',
10
+ labelField:'fullname',
11
+ defaultSort:{ field:'joeUpdated', dir:'desc' },
12
+ searchableFields:['name','fullname','email','_id'],
13
+ allowedSorts:['joeUpdated','created','name','fullname','email','role'],
14
+ relationships:{
15
+ outbound:[
16
+ { field:'status', targetSchema:'status', cardinality:'one' },
17
+ { field:'tags', targetSchema:'tag', cardinality:'many' },
18
+ // administrative associations on the user record
19
+ { field:'apps', targetSchema:'app', cardinality:'many' },
20
+ { field:'schemas', targetSchema:'<schemaName>', cardinality:'many' },
21
+ { field:'items', targetSchema:'*', cardinality:'many' }
22
+ ],
23
+ inbound:{ graphRef:'server/relationships.graph.json' }
24
+ },
25
+ joeManagedFields:['created','joeUpdated'],
26
+ fields:[
27
+ { name:'_id', type:'string', required:true },
28
+ { name:'itemtype', type:'string', required:true, const:'user' },
29
+ { name:'name', type:'string', required:true },
30
+ { name:'fullname', type:'string' },
31
+ { name:'email', type:'string' },
32
+ { name:'role', type:'string', enumValues:['','viewer','editor','admin','super'] },
33
+ { name:'status', type:'string', isReference:true, targetSchema:'status' },
34
+ { name:'tags', type:'string', isArray:true, isReference:true, targetSchema:'tag' },
35
+ { name:'styles', type:'code', comment:'css to append to dashboard head' },
36
+ { name:'description', type:'string', display:'bio' },
37
+ { name:'joeUpdated', type:'string', format:'date-time', required:true },
38
+ { name:'created', type:'string', format:'date-time', required:true }
39
+ ]
40
+ },
6
41
  listView:{
7
42
 
8
43
  title: function(user){
@@ -2,6 +2,35 @@ var schema = {
2
2
  title : '${name}',
3
3
  info:"A workflow is automated to track the status of a process you've created (ex: new member flow).",
4
4
  default_schema:true,
5
+ // Curated summary for agents
6
+ summary:{
7
+ description:'Ordered collection of statuses defining a process for specific datasets.',
8
+ purpose:'Workflows group statuses into a sequence (or set) used by one or more schemas. Use workflow to derive valid status options per dataset and to present step progress.',
9
+ labelField:'name',
10
+ defaultSort:{ field:'name', dir:'asc' },
11
+ searchableFields:['name','info','workflow_id','_id'],
12
+ allowedSorts:['name','joeUpdated','created'],
13
+ relationships:{
14
+ outbound:[
15
+ { field:'statuses', targetSchema:'status', cardinality:'many' },
16
+ { field:'datasets', targetSchema:'<schemaName>', cardinality:'many' }
17
+ ],
18
+ inbound:{ graphRef:'server/relationships.graph.json' }
19
+ },
20
+ joeManagedFields:['created','joeUpdated'],
21
+ fields:[
22
+ { name:'_id', type:'string', required:true },
23
+ { name:'itemtype', type:'string', required:true, const:'workflow' },
24
+ { name:'name', type:'string', required:true },
25
+ { name:'info', type:'string' },
26
+ { name:'description', type:'string' },
27
+ { name:'workflow_id', type:'string' },
28
+ { name:'statuses', type:'string', isArray:true, isReference:true, targetSchema:'status' },
29
+ { name:'datasets', type:'string', isArray:true },
30
+ { name:'joeUpdated', type:'string', format:'date-time', required:true },
31
+ { name:'created', type:'string', format:'date-time', required:true }
32
+ ]
33
+ },
5
34
  listView:{
6
35
  title:
7
36
  '<joe-full-right><joe-subtext>${this.index}</joe-subtext></joe-full-right>'+
@@ -44,7 +73,7 @@ var schema = {
44
73
  'name',
45
74
  'info',
46
75
  'description',
47
- 'workflow_id',
76
+ {name:'workflow_id',type:'text',display:'Workflow ID',comment:'a memorable ID for this workflow'},
48
77
  {name:'statuses',type:'objectReference',values:'status',sortBy:'index,name',schema:'status',
49
78
  reference_template:'<joe-title>${name}</joe-title><joe-subtext>${info}</joe-subtext>',
50
79
  bgcolor:function(status,item){